Problem beim Löschen des Inhalts des Fensters

Status
Nicht offen für weitere Antworten.

SirBaros

Bekanntes Mitglied
Hallo,
ich möchte gerne den Inhalt, also JTextFields, JLabels und auch JButtons in meinem Hauptfenster GUI löschen ohne das Fenster zu schließen.

Das Löschen möchte ich gerne in der nebenklasse Steuerugn machen,mit dem Befehl g.removeAll() aber wenn ich nach dem ActionListener aufrufe, hängt es.

Bitte um Hilfe.



Code:
public class Steuerung implements ActionListener{
	
	JTextField feld_kundennummer;
	JTextField feld_pin;
	private GUI g;
	
	Steuerung(JTextField kundennummer, JTextField pin,GUI g){
	 
		feld_kundennummer=kundennummer;
		feld_pin=pin;
		this.g=g;

	}
	public void actionPerformed(ActionEvent arg0) {
		
		try {
    		
			Boolean eingegebene_daten = false;
			
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			Connection con = DriverManager
			.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:/Users/Tobias/Desktop/Nordwind.mdb");
			Statement stmt = con.createStatement();
			
			Statement befehl=con.createStatement();
			ResultSet datenmenge;
			datenmenge=befehl.executeQuery("SELECT Kundennummer,Kontopasswort FROM Kundendaten");
			
			
			while(datenmenge.next()){
					
				if((datenmenge.getString("Kundennummer").equals(feld_kundennummer.getText()))&&(datenmenge.getString("Kontopasswort").equals(feld_pin.getText()))){
						
					eingegebene_daten=true;
				}else{
					
				}
			}
			
			if(eingegebene_daten){
				
				g.removeAll();
				
			}else{
				
					final JDialog eingabefehler = new JDialog();
					eingabefehler.setTitle("Eingabefehler");
					eingabefehler.setSize(300,200);
					eingabefehler.setResizable(false);
					eingabefehler.setModal(true);
					eingabefehler.setLocation(300,261);
					   					
					JPanel panel=new JPanel();
					panel.setBackground(Color.WHITE);
					panel.setLayout(null);
		        		
					JLabel ersteZeile=new JLabel("Ein Fehler in Ihrer Eingabe ist ");
					ersteZeile.setFont(new Font("Dialog", Font.PLAIN, 13)); 
					ersteZeile.setBounds(55,25,230,20);
					
					JLabel zweiteZeile=new JLabel(" aufgetretten. ");
					zweiteZeile.setFont(new Font("Dialog", Font.PLAIN, 13)); ; 
					zweiteZeile.setBounds(105,50,230,20);
					
					JLabel dritteZeile=new JLabel("Bitte korrigieren Sie ihre Eingabe.");
					dritteZeile.setFont(new Font("Dialog", Font.PLAIN, 13)); 
					dritteZeile.setBounds(47,75,230,20);
					
					JButton button=new JButton("OK");
					button.setBounds(90,120,120,30);
					
					eingabefehler.add(panel);
					panel.add(ersteZeile);
					panel.add(zweiteZeile);
					panel.add(dritteZeile);
					panel.add(button);
					
					button.addActionListener(new ActionListener(){
						public void actionPerformed(ActionEvent e){
							eingabefehler.setVisible(false);
						}
					});
			
					eingabefehler.setVisible(true);
					
			}
			
			
			stmt.close();
			con.close();
		
			
			} catch (ClassNotFoundException ev) {
				// TODO Auto-generated catch block
				ev.printStackTrace();
			} catch (SQLException ev) {
				// TODO Auto-generated catch block
				ev.printStackTrace();
			}
		
	

	}
 
 
}
 
Probier mal:
Code:
SwingUtilities.invokeLater(new Runnable() {
  @Override
  public void run() {
    g.removeAll();
    g.revalidate();
    g.repaint();
  }
});
BTW: Das ResultSet sollte ebenfalls geschlossen werden!
 
mhh funktioniert doch!

Code:
public class SelfEmptyingFrame extends JFrame {

  /** Creates a new <code>SelfEmptyingFrame</code>. */
  public SelfEmptyingFrame() {
    final AbstractAction emptyingAction =
          new AbstractAction("Empty the frame") {

            @Override
            public void actionPerformed(ActionEvent e) {
              final JFrame f =
                    (JFrame) SwingUtilities.getWindowAncestor((Component) e
                          .getSource());
              SwingUtilities.invokeLater(new Runnable() {

                @Override
                public void run() {
                  final JComponent pane = (JComponent) f.getContentPane();
                  pane.removeAll();
                  pane.revalidate();
                  pane.repaint();
                }
              });
            }
          };

    final JPanel p1 = new JPanel(new GridLayout(2, 1, 6, 6));
    {
      final JPanel p11 = new JPanel(new BorderLayout(6, 6));
      {
        p11.add(new JScrollPane(new JTable(3, 3)));
        p11.add(new JButton(emptyingAction), BorderLayout.WEST);
      }
      p1.add(p11);
      final JPanel p12 = new JPanel(new BorderLayout(6, 6));
      {
        p12.add(new JScrollPane(new JTable(3, 3)));
        p12.add(new JButton(emptyingAction), BorderLayout.EAST);
      }
      p1.add(p12);
    }
    setContentPane(p1);
  }

  /**
   * Test main method.
   * 
   * @param args ignored
   */
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        final SelfEmptyingFrame frame = new SelfEmptyingFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
      }
    });
  }
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben