setUndecorated

Saban

Erfahrenes Mitglied
Morgen!

also in der Javadoc von der Klasse java.awt.Frame heißt es:
Disables or enables decorations for this frame. This method can only be called while the frame is not displayable.

Das heißt für mich ich soll das Frame undecorated setzen bevor ich es anzeigen lasse. Dies mache ich auch und bei der Ausführung kommt es zu keiner Fehlermeldung, jedoch wenn ich was aus einem TextFeld auslese und in einem anderen eine Ausgabe setzen will kommt der Fehler:
java.awt.IllegalComponentStateException: The frame is displayable.
at java.awt.Frame.setUndecorated().....

Kann mir da jemand helfen?

Grüße
Saban
 
Hallo,

Wann liest du denn was aus dem Textfeld?

Könntest du vielleicht den Code posten?

MFG

Sascha
 
Hi!

also erst mal erwartet nicht zu viel vom code bin noch ein Anfänger und falls dir irgendwas auffällt was man sonst noch ändern könnte wäre ich dir echt dankbar für mich sieht der code noch irgendwie komisch aus... :(

Code für den Aufbau des Frames
Java:
package Notenberechner;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Fenster {
	public static JTextField tf_schulz[] 	= new JTextField[40];
	public static JTextField tf_exen[] 		= new JTextField[40];
	public static JTextField tf_mündlich[]	= new JTextField[40];
	public static JTextField tf_referat[] 	= new JTextField[40];
	public static JTextField tf_note[]		= new JTextField[10];
	public static JLabel lb_fach[] 			= new JLabel[10];
	public static JLabel lb_note[]			= new JLabel[5];
	public static JButton bt_close 			= new JButton();
	public static JButton bt_delete			= new JButton();
	public static JFrame frame 				= new JFrame("Notenberechner");
	public static String str_pfad 			= "D:\\Programm Files\\Programmieren\\eclipse\\Admin\\";
	
	Fenster(){	
		int x_pos	= 0;
		int y_pos	= 0;
		int Y_POS	= 50;
		int höhe	= 0;
		int breite	= 0;
		int zähler 	= 0;
		int tmp_x	= 0;
		int x_note[]= new int[5];
				
		KeyListener key	= new KeyListener(){
			public void keyPressed(KeyEvent arg0) {}
			public void keyReleased(KeyEvent arg0) {
				Berechner rechner = new Berechner();
				rechner.leeren();
				rechner.exen();
				rechner.mündlich();
				rechner.schulz();
				rechner.referate();
				rechner.ausgabe();
			}
			public void keyTyped(KeyEvent arg0) {}
		};
		
		/* Schleife zum Anlegen der Textfelder */
		for(int index = 0; index < 40; index++){
			tf_schulz[index] 	= new JTextField();
			tf_exen[index] 		= new JTextField();
			tf_mündlich[index] 	= new JTextField();
			tf_referat[index] 	= new JTextField();
			
			tf_schulz[index].addKeyListener(key);
			tf_exen[index].addKeyListener(key);
			tf_mündlich[index].addKeyListener(key);
			tf_referat[index].addKeyListener(key);
		}
		
		for(int index = 0; index < 10; index++){
			tf_note[index]	= new JTextField();
			lb_fach[index]	= new JLabel();
		}
		
		for(int index = 0; index < 5; index++){
			lb_note[index] = new JLabel();
		}
						
		/* Layout des Frames */
		frame.setLayout(null);
		
		/* Layout der Labels */
		x_pos	= 10;
		y_pos	= Y_POS;
		höhe	= 20;
		breite	= 60;
		
		for(int index = 0; index < 10; index++){			
			lb_fach[index].setBounds(x_pos, y_pos, breite, höhe);
			y_pos = y_pos + höhe + 5;
		}		
		
		/* Layout der Exen */
		zähler 		= 0;
		tmp_x 		= x_pos + 60;
		x_pos		= tmp_x + 20;
		x_note[0]	= x_pos;
		y_pos		= Y_POS;
		höhe		= 20;
		breite		= 20;
		
		for(int index = 0; index < 40; index++){
			if(zähler == 4){
				y_pos = y_pos + höhe + 5;
				x_pos = tmp_x + 20;
				zähler = 0;
			}
			
			tf_exen[index].setBounds(x_pos, y_pos, breite, höhe);
			
			x_pos = x_pos + breite + 5;
			zähler++;
		}
		
		/* Layout der Mündlichen */
		zähler 		= 0;
		tmp_x 		= x_pos;
		x_pos		= tmp_x + 20;
		x_note[1]	= x_pos;
		y_pos		= Y_POS;
		
		for(int index = 0; index < 40; index++){
			if(zähler == 4){
				y_pos = y_pos + höhe + 5;
				x_pos = tmp_x + 20;
				zähler = 0;
			}
			
			tf_mündlich[index].setBounds(x_pos, y_pos, breite, höhe);
			
			x_pos = x_pos + breite + 5;
			zähler++;
		}
		
		/* Layout der Schulaufgaben */
		zähler 		= 0;
		tmp_x 		= x_pos;
		x_pos		= tmp_x + 20;
		x_note[2]	= x_pos;
		y_pos		= Y_POS;
		
		for(int index = 0; index < 40; index++){
			if(zähler == 4){
				y_pos = y_pos + höhe + 5;
				x_pos = tmp_x + 20;
				zähler = 0;
			}
			
			tf_schulz[index].setBounds(x_pos, y_pos, breite, höhe);
			
			x_pos = x_pos + breite + 5;
			zähler++;
		}
		
		/* Layout der Referate */
		zähler 		= 0;
		tmp_x 		= x_pos;
		x_pos		= tmp_x + 20;
		x_note[3]	= x_pos;
		y_pos		= Y_POS;
		
		for(int index = 0; index < 40; index++){
			if(zähler == 4){
				y_pos = y_pos + höhe + 5;
				x_pos = tmp_x + 20;
				zähler = 0;
			}
			
			tf_referat[index].setBounds(x_pos, y_pos, breite, höhe);
			
			x_pos = x_pos + breite + 5;
			zähler++;
		}
		
		/* Layout der Durchschnitte */
		tmp_x 		= x_pos;
		x_pos		= tmp_x + 20;
		x_note[4]	= x_pos;
		y_pos		= Y_POS;
		
		for(int index = 0; index < 10; index++){			
			tf_note[index].setBounds(x_pos, y_pos, breite, höhe);
			y_pos = y_pos + höhe + 5;
		}
		
		/* Layout der Noten Bezeichnungen */
		y_pos	= 25;
		breite	= 85;
		for(int index = 0; index < 5; index++){			
			lb_note[index].setBounds(x_note[index], y_pos, breite, höhe);
		}	
		
		/* Layout der Buttons */
		bt_close.setBounds(584, 0, 16, 16);
		bt_delete.setBounds(564, 0, 16, 16);
		
		/* Schleife zum hinzufügen der Komponenten */
		for(int index = 0; index < 40; index++){
			frame.add(tf_schulz[index]);
			frame.add(tf_exen[index]);
			frame.add(tf_mündlich[index]);
			frame.add(tf_referat[index]);
		}
		
		for(int index = 0; index < 10; index++){
			frame.add(tf_note[index]);
			frame.add(lb_fach[index]);
		}
		
		for(int index = 0; index < 5; index++){
			frame.add(lb_note[index]);
		}
		
		frame.add(bt_close);
		frame.add(bt_delete);
			
		/* Eigenschaften des Frames */
		Color color = new Color(0, 153, 255);
		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		frame.setResizable(false);
		frame.setUndecorated(true);
		frame.getContentPane().setBackground(color);
		frame.setSize(600, 300);
		frame.setAlwaysOnTop(false);
		frame.setLocation(550, 0);
	}
	
	/* Funktion zum Anzeigen des Fensters */
	public static void anzeigen(boolean bool){
		frame.setVisible(bool);
	}
}
	
	/* Fächer und dazugehörigen Noten
	 * 		00. AnPr		00 - 03
	 * 		01. VersNe		04 - 07
	 * 		02. VersÖf		08 - 11
	 * 		03. VersWi		12 - 15
	 * 		04. BWR			16 - 19
	 * 		05. Sozi		20 - 23
	 * 		06. Englisch	24 - 27
	 * 		07. Deutsch 	28 - 31
	 * 		08. Sport 		32 - 35
	 * 		09. Ethik 		36 - 39	
	 */

Code für die Main
Java:
package Notenberechner;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JTextField;

public class Init extends Fenster{
	public static void main(String [] args){		
		Fenster fenster = new Fenster();
				
		/* Schleife zum Anlegen der Textfelder */
		for(int index = 0; index < 40; index++){
			tf_schulz[index].setHorizontalAlignment(JTextField.CENTER);
			tf_schulz[index].setDocument(new TextFeldBegrenzung(1));
			tf_schulz[index].setFont(new Font("SansSerif", Font.BOLD, 14));
			
			tf_exen[index].setHorizontalAlignment(JTextField.CENTER);
			tf_exen[index].setDocument(new TextFeldBegrenzung(1));
			tf_exen[index].setFont(new Font("SansSerif", Font.BOLD, 14));
			
			tf_mündlich[index].setHorizontalAlignment(JTextField.CENTER);
			tf_mündlich[index].setDocument(new TextFeldBegrenzung(1));
			tf_mündlich[index].setFont(new Font("SansSerif", Font.BOLD, 14));
			
			tf_referat[index].setHorizontalAlignment(JTextField.CENTER);
			tf_referat[index].setDocument(new TextFeldBegrenzung(1));
			tf_referat[index].setFont(new Font("SansSerif", Font.BOLD, 14));
		}
		
		for(int index = 0; index < 10; index++){
			tf_note[index].setHorizontalAlignment(JTextField.CENTER);
			tf_note[index].setDocument(new TextFeldBegrenzung(1));
			tf_note[index].setEditable(false);
			tf_note[index].setFont(new Font("SansSerif", Font.BOLD, 14));
		}
		
		/* Füllen der Labels mit Text */
		lb_fach[0].setText("AnPr");
		lb_fach[1].setText("VersNe");
		lb_fach[2].setText("VersÖf");
		lb_fach[3].setText("VersWi");
		lb_fach[4].setText("BWR");
		lb_fach[5].setText("Sozi");
		lb_fach[6].setText("Englisch");
		lb_fach[7].setText("Deutsch");
		lb_fach[8].setText("Sport");
		lb_fach[9].setText("Ethik");
		
		lb_note[0].setText("Extemporale");
		lb_note[1].setText("Mündliche");
		lb_note[2].setText("Schulaufgaben");
		lb_note[3].setText("Referate");
		lb_note[4].setText("<html>&OSlash</html>");	
		lb_note[4].setFont(new Font("SansSerif", Font.BOLD, 18));
		
		/* Eigenschaften der Buttons */
		bt_close.setIcon(new ImageIcon(str_pfad + "pics_notenberechner\\close.png"));
		bt_close.setBorderPainted(false);
		bt_close.setContentAreaFilled(false);
		bt_close.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
		
		bt_delete.setIcon(new ImageIcon(str_pfad + "pics_notenberechner\\löschen.png"));
		bt_delete.setBorderPainted(false);
		bt_delete.setContentAreaFilled(false);
		bt_delete.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				for(int index = 0; index < 40; index++){
					tf_schulz[index].setText("");
					tf_exen[index].setText("");
					tf_mündlich[index].setText("");
					tf_referat[index].setText("");
				}
				
				for(int index = 0; index < 10; index++){
					tf_note[index].setText("");
				}
			}
		});
				
		fenster.anzeigen(true);
	}
	
	/* Fächer und dazugehörigen Noten
	 * 		00. AnPr		00 - 03
	 * 		01. VersNe		04 - 07
	 * 		02. VersÖf		08 - 11
	 * 		03. VersWi		12 - 15
	 * 		04. BWR			16 - 19
	 * 		05. Sozi		20 - 23
	 * 		06. Englisch	24 - 27
	 * 		07. Deutsch 	28 - 31
	 * 		08. Sport 		32 - 35
	 * 		09. Ethik 		36 - 39	
	 */
}

Code für den Berechner
Java:
package Notenberechner;

public class Berechner extends Fenster{
	private static int zähler[]	= new int[10];
	private static int summe[]	= new int[10];
	
	public void leeren(){
		for(int index = 0; index < 10; index++){
			summe[index] = 0;
			zähler[index]= 0;
		}
	}
	
	public void exen(){
		/* Auslesen der Textfelder */
		for(int index = 0; index < 40; index++){
			if(tf_exen[index].getText().length() > 0){
				if(index < 4){
					zähler[0] = zähler[0] + 1;
					summe[0] = summe[0] + Integer.parseInt(tf_exen[index].getText());	/* AnPr */
				}
				else if(index > 3 && index < 8){
					zähler[1] = zähler[1] + 1;
					summe[1] = summe[1] + Integer.parseInt(tf_exen[index].getText());	/* VersNe */
				}
				else if(index > 7 && index < 12){
					zähler[2] = zähler[2] + 1;
					summe[2] = summe[2] + Integer.parseInt(tf_exen[index].getText());	/* VersÖf */
				}
				else if(index > 11 && index < 16){
					zähler[3] = zähler[3] + 1;
					summe[3] = summe[3] + Integer.parseInt(tf_exen[index].getText());	/* VersWi */
				}
				else if(index > 15 && index < 20){
					zähler[4] = zähler[4] + 1;
					summe[4] = summe[4] + Integer.parseInt(tf_exen[index].getText());	/* BWR */
				}
				else if(index > 19 && index < 24){
					zähler[5] = zähler[5] + 1;
					summe[5] = summe[5] + Integer.parseInt(tf_exen[index].getText());	/* Sozi */
				}
				else if(index > 23 && index < 28){
					zähler[6] = zähler[6] + 1;
					summe[6] = summe[6] + Integer.parseInt(tf_exen[index].getText());	/* Englisch */
				}
				else if(index > 27 && index < 32){
					zähler[7] = zähler[7] + 1;
					summe[7] = summe[7] + Integer.parseInt(tf_exen[index].getText());	/* Deutsch */
				}
				else if(index > 31 && index < 36){
					zähler[8] = zähler[8] + 1;
					summe[8] = summe[8] + Integer.parseInt(tf_exen[index].getText());	/* Sport */
				}
				else if(index > 35 && index < 40){
					zähler[9] = zähler[9] + 1;
					summe[9] = summe[9] + Integer.parseInt(tf_exen[index].getText());	/* Ethik */
				}
			}
		}
	}

	public void mündlich(){
		/* Auslesen der Textfelder */
		for(int index = 0; index < 40; index++){
			if(tf_mündlich[index].getText().length() > 0){
				if(index < 4){
					zähler[0] = zähler[0] + 1;
					summe[0] = summe[0] + Integer.parseInt(tf_mündlich[index].getText());	/* AnPr */
				}
				else if(index > 3 && index < 8){
					zähler[1] = zähler[1] + 1;
					summe[1] = summe[1] + Integer.parseInt(tf_mündlich[index].getText());	/* VersNe */
				}
				else if(index > 7 && index < 12){
					zähler[2] = zähler[2] + 1;
					summe[2] = summe[2] + Integer.parseInt(tf_mündlich[index].getText());	/* VersÖf */
				}
				else if(index > 11 && index < 16){
					zähler[3] = zähler[3] + 1;
					summe[3] = summe[3] + Integer.parseInt(tf_mündlich[index].getText());	/* VersWi */
				}
				else if(index > 15 && index < 20){
					zähler[4] = zähler[4] + 1;
					summe[4] = summe[4] + Integer.parseInt(tf_mündlich[index].getText());	/* BWR */
				}
				else if(index > 19 && index < 24){
					zähler[5] = zähler[5] + 1;
					summe[5] = summe[5] + Integer.parseInt(tf_mündlich[index].getText());	/* Sozi */
				}
				else if(index > 23 && index < 28){
					zähler[6] = zähler[6] + 1;
					summe[6] = summe[6] + Integer.parseInt(tf_mündlich[index].getText());	/* Englisch */
				}
				else if(index > 27 && index < 32){
					zähler[7] = zähler[7] + 1;
					summe[7] = summe[7] + Integer.parseInt(tf_mündlich[index].getText());	/* Deutsch */
				}
				else if(index > 31 && index < 36){
					zähler[8] = zähler[8] + 1;
					summe[8] = summe[8] + Integer.parseInt(tf_mündlich[index].getText());	/* Sport */
				}
				else if(index > 35 && index < 40){
					zähler[9] = zähler[9] + 1;
					summe[9] = summe[9] + Integer.parseInt(tf_mündlich[index].getText());	/* Ethik */
				}
			}
		}
	}

	public void schulz(){
		/* Auslesen der Textfelder */
		for(int index = 0; index < 40; index++){
			if(tf_schulz[index].getText().length() > 0){
				if(index < 4){
					zähler[0] = zähler[0] + 2;
					summe[0] = summe[0] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* AnPr */
				}
				else if(index > 3 && index < 8){
					zähler[1] = zähler[1] + 2;
					summe[1] = summe[1] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* VersNe */
				}
				else if(index > 7 && index < 12){
					zähler[2] = zähler[2] + 2;
					summe[2] = summe[2] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* VersÖf */
				}
				else if(index > 11 && index < 16){
					zähler[3] = zähler[3] + 2;
					summe[3] = summe[3] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* VersWi */
				}
				else if(index > 15 && index < 20){
					zähler[4] = zähler[4] + 2;
					summe[4] = summe[4] + 2*(Integer.parseInt(tf_mündlich[index].getText()));	/* BWR */
				}
				else if(index > 19 && index < 24){
					zähler[5] = zähler[5] + 2;
					summe[5] = summe[5] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* Sozi */
				}
				else if(index > 23 && index < 28){
					zähler[6] = zähler[6] + 2;
					summe[6] = summe[6] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* Englisch */
				}
				else if(index > 27 && index < 32){
					zähler[7] = zähler[7] + 2;
					summe[7] = summe[7] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* Deutsch */
				}
				else if(index > 31 && index < 36){
					zähler[8] = zähler[8] + 2;
					summe[8] = summe[8] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* Sport */
				}
				else if(index > 35 && index < 40){
					zähler[9] = zähler[9] + 2;
					summe[9] = summe[9] + 2*(Integer.parseInt(tf_schulz[index].getText()));	/* Ethik */
				}
			}
		}
	}

	public void referate(){		
		/* Auslesen der Textfelder */
		for(int index = 0; index < 40; index++){
			if(tf_referat[index].getText().length() > 0){
				if(index < 4){
					zähler[0] = zähler[0] + 2;
					summe[0] = summe[0] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* AnPr */
				}
				else if(index > 3 && index < 8){
					zähler[1] = zähler[1] + 2;
					summe[1] = summe[1] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* VersNe */
				}
				else if(index > 7 && index < 12){
					zähler[2] = zähler[2] + 2;
					summe[2] = summe[2] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* VersÖf */
				}
				else if(index > 11 && index < 16){
					zähler[3] = zähler[3] + 2;
					summe[3] = summe[3] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* VersWi */
				}
				else if(index > 15 && index < 20){
					zähler[4] = zähler[4] + 2;
					summe[4] = summe[4] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* BWR */
				}
				else if(index > 19 && index < 24){
					zähler[5] = zähler[5] + 2;
					summe[5] = summe[5] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* Sozi */
				}
				else if(index > 23 && index < 28){
					zähler[6] = zähler[6] + 2;
					summe[6] = summe[6] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* Englisch */
				}
				else if(index > 27 && index < 32){
					zähler[7] = zähler[7] + 2;
					summe[7] = summe[7] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* Deutsch */
				}
				else if(index > 31 && index < 36){
					zähler[8] = zähler[8] + 2;
					summe[8] = summe[8] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* Sport */
				}
				else if(index > 35 && index < 40){
					zähler[9] = zähler[9] + 2;
					summe[9] = summe[9] + 2*(Integer.parseInt(tf_referat[index].getText()));	/* Ethik */
				}
			}
		}
	}

	public void ausgabe(){
		tf_note[0].setText(String.valueOf(summe[0]/zähler[0]));
	}
}

Grüße
Saban
 
Hallo Saban,

das Problem ist, dass die Klasse Berechner von der Klasse Fenster erbt und du bei jedem Tastendruck eine neue Instanz davon erzeugst. Dabei wird der default Konstruktor der Klasse Fenster aufgerufen und dort die Methode setUndecorated(). Da aber dein Frame schon angezeigt wird, kommt es zu einer Exception, genau wie in der Javadoc beschrieben ist.

Als Lösung würde ich dir empfehlen, deine Klassenstruktur nochmal zu überdenken.

Grüße
Vincent
 
Zurück