2017-09-20 5 views
0

Je n'arrive pas à comprendre pourquoi mon JFrame est vide. Où vais-je mal?Pourquoi mon JFrame est-il vide?

import javax.swing. *; import java.awt.FlowLayout;

GUIExample public class extends JFrame {

JCheckBox box1 = new JCheckBox("Satellite Radio"); 
JCheckBox box2 = new JCheckBox("Air Conditioning"); 
JCheckBox box3 = new JCheckBox("Manual Tranmission"); 
JCheckBox box4 = new JCheckBox("Leather Seats"); 
JRadioButton radio1 = new JRadioButton("Car"); 
JRadioButton radio2 = new JRadioButton("Pickup Truck"); 
JRadioButton radio3 = new JRadioButton("Minivan"); 
JTextField text = new JTextField(); 
ButtonGroup group = new ButtonGroup(); 

public void newGUI() { 

    setLayout(new FlowLayout()); 
    JPanel panel = new JPanel(); 
    JPanel textPanel = new JPanel(); 

    add(textPanel); 
    add(panel); 

    panel.add(box1); 
    panel.add(box2); 
    panel.add(box3); 
    panel.add(radio1); 
    panel.add(radio2); 
    panel.add(radio3); 
    group.add(radio1); 
    group.add(radio2); 
    group.add(radio3); 

} 

public static void main(String[] args) { 

    JFrame frame = new JFrame("GUI Example"); 
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 

} 

}

Répondre

0

Vous avez oublié d'ajouter le contentPane dans votre Jframe, quelque chose comme ça

frame.setContentPane(panel); 

Je remarque que vous utilisez héritage Construisez votre jFrame, donc dans ce cas, vous devez instancier votre propre classe. J'ai refactorisé votre code avec le minimun pour lancer un jFrame.

public class GUIExample extends JFrame { 

    JCheckBox box1 = new JCheckBox("Satellite Radio"); 

    public static void main(String[] args) { 
     JFrame frame = new GUIExample("GUI Example"); 
     JPanel panel = new JPanel(); 
     panel.setLayout(new FlowLayout()); 
     panel.add(box1); 

     frame.setContentPane(panel); 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
     frame.setSize(500, 500); 
     frame.setVisible(true); 
    } 
} 

Fondamentalement, vous créez un JFrame, créez un JPanel, ajoutez vos composants à ce panneau et définissez le panneau sur votre cadre avec setContentPane(panel). Je suis désolé, je ne peux pas tester cela maintenant, donc si quelqu'un pourrait et réparer si nécessaire, apprécierait vraiment, mais c'est quelque chose comme ça.

+0

Vous êtes les bienvenus =) – renanpallin

0

Tout d'abord, essayez ce que vous essayez de faire. Cependant, il semble y avoir quelques malentendus de base quant à la façon dont vous coder l'interface graphique.

Il existe deux façons de créer une interface graphique en Java. Soit vous créez des cadres et des objets de panneau, puis vous leur ajoutez vos composants, ou vous pouvez créer et étendre vos propres classes par extends JFrame. Mais dans ce cas, vous avez essayé de faire les deux. Vous avez étendu JFrame et vous avez créé les objets. En fait, j'aime vraiment comment vous avez essayé d'étendre le JFrame, donc j'ai continué et j'ai fait du code qui ajoute des choses à votre écran!

Voir ci-dessous - GUIExample.java:

import javax.swing.*; 
import java.awt.FlowLayout; 

public class GUIExample extends JFrame { 

    JCheckBox box1 = new JCheckBox("Satellite Radio"); 
    JCheckBox box2 = new JCheckBox("Air Conditioning"); 
    JCheckBox box3 = new JCheckBox("Manual Tranmission"); 
    JCheckBox box4 = new JCheckBox("Leather Seats"); 
    JRadioButton radio1 = new JRadioButton("Car"); 
    JRadioButton radio2 = new JRadioButton("Pickup Truck"); 
    JRadioButton radio3 = new JRadioButton("Minivan"); 
    JTextField text = new JTextField(); 
    ButtonGroup group = new ButtonGroup(); 

    GUIExample() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(500, 500); 
     setVisible(true); 

     newGUI(); 
    } 


    public void newGUI() { 

     setLayout(new FlowLayout()); 
     JPanel panel = new JPanel(); 
     JPanel textPanel = new JPanel(); 

     add(textPanel); 
     add(panel); 

     panel.add(box1); 
     panel.add(box2); 
     panel.add(box3); 
     panel.add(radio1); 
     panel.add(radio2); 
     panel.add(radio3); 
     group.add(radio1); 
     group.add(radio2); 
     group.add(radio3); 

    } 

} 

test.java:

public class test { 

    public static void main(String[] args) { 
     GUIExample e = new GUIExample(); 
    } 
} 

Pour obtenir ce travail. Compilez les deux fichiers, puis exécutez votre programme via test.java.

En plus de votre solution d'origine, vous n'avez nulle part ajouté un appel newGUI() pour que tout ce code devienne redondant. Cependant, comme la méthode principale est statique, vous ne pourriez pas l'appeler de toute façon.

J'espère que cela aide!

+0

Cela a du sens, merci. –

+0

De rien. –