2017-11-20 2 views
0

Ich machte ein Projekt, wo in einer Tabelle 4 Tasten und wenn Sie darauf klicken eine andere Box angezeigt werden soll, aber ich, wenn ich es mache, öffnet das zweite Fenster und beide Fenster schließen kann ich nicht Zugriff auf die Codes, die aus der ActionPerformed() herauskommen sollen, wo es einfach in das andere Fenster springt und in weniger als 3 Sekunden schließt, ohne es zu öffnen, die anderen Codes funktionieren gut Ich bin müde, hier ist der Code für die erste Box :Java zweiten Frame nicht angezeigt

public class MathoQuest extends JFrame implements ActionListener { 
    JButton boutConvert, boutGeo, boutFonc, boutOut; 



    public MathoQuest() { 
     setTitle("Bienvenue a MathoQuest"); 
     setSize(250,500); 
     JPanel simplePanel = new JPanel(); 
     simplePanel.setLayout(null); 
     add(simplePanel); 
     Font helvb14 = new Font("Arial" , Font.BOLD , 30); 


     boutConvert = new JButton("Convertir"); 
     boutConvert.setFont(helvb14); 
     boutConvert.setForeground(Color.white); 
     boutConvert.setBackground(new Color(63,107,220)); 
     simplePanel.add(boutConvert); 
     boutConvert.setBounds(25,50,200,80); 
     boutConvert.addActionListener(this); 

     boutGeo = new JButton("Geometrie-\nEN CONSTRUCTION-"); 
     boutGeo.setFont(helvb14); 
     boutConvert.setForeground(Color.white); 
     boutGeo.setBackground(new Color(145,110,220)); 
     simplePanel.add(boutGeo); 
     boutGeo.setBounds(25,150,200,80); 
     boutGeo.addActionListener(this); 

     boutFonc = new JButton("Fonction"); 
     boutFonc.setFont(helvb14); 
     boutFonc.setForeground(Color.white); 
     boutFonc.setBackground(new Color(150,200,80)); 
     simplePanel.add(boutFonc); 
     boutFonc.setBounds(25,250,200,80); 
     boutFonc.addActionListener(this); 

     boutOut = new JButton("Quitter"); 
     boutOut.setFont(helvb14); 
     boutOut.setForeground(Color.white); 
     boutOut.setBackground(new Color(245,130,0)); 
     simplePanel.add(boutOut); 
     boutOut.setBounds(25,350,200,80); 
     boutOut.addActionListener(this);   


    } 
    public static void main(String[] args) { 
     MathoQuest mathframe = new MathoQuest(); 
    mathframe.setVisible(true); 
     mathframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }  

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == boutConvert) { 
        ConversionFrame frame = new ConversionFrame(); 
        frame.getContentPane(); 
        frame.setVisible(true); 
     } 
     if (e.getSource() == boutGeo) { 
      JOptionPane.showMessageDialog(null,"Ce mode est encore en construction merci de reessayer plus tard"); 
     } 
     if (e.getSource() == boutFonc) { 
       FonctionFrame dess = new FonctionFrame(); 
       dess.getContentPane(); 
     dess.setVisible(true); 
     } 
     if (e.getSource() == boutOut) 
      JOptionPane.showMessageDialog(null,"Au revoir et merci d'avoir utilise cette application"); 
      System.exit(0); 
    } 


} 

Antwort

1

Haben Sie versucht, in Klammern den letzten if Zustand umschließt?

Ohne sie einzuschließen, System.exit(0); wird unter allen Umständen aufgerufen werden, und nur die sofortige Linie nach der if wird Teil davon sein.

So wird die Exit-Methode Teil der direkten Methode sein, nicht der if Block.

Effektiv wird das Programm wie folgt aussehen:

if (e.getSource() == boutOut) 
{ 
    JOptionPane.showMessageDialog(null,"Au revoir et merci d'avoir utilise cette application"); 
} 

System.exit(0); 

Während es sollte wie folgt aussehen:

if (e.getSource() == boutOut) 
{ 
    JOptionPane.showMessageDialog(null,"Au revoir et merci d'avoir utilise cette application"); 
    System.exit(0); 
} 
+0

wow dank es jetzt – studentofjava

+0

Immer Mann arbeitet. Auch ein Ratschlag von einem Anfänger wie mir: Automatisches Einrücken des Programms vor der Kompilierung - es hilft wirklich beim Debuggen von Fehlern wie diesem. –

+0

@studentofjava Die meisten Java-Kodierungsstandards erfordern den Körper von * every * if, while und for in Klammern, selbst wenn es nur eine Zeile lang ist, genau aus diesem Grund. Es ist eine gute Angewohnheit, hineinzugehen. – VGR

Verwandte Themen