2017-09-20 9 views
0

なぜ私のJFrameが空であるのか分かりません。どこが間違っていますか?なぜ私のJFrameは空ですか?

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

パブリッククラスGUIExampleはあなたが私はあなたに継承を使用している気づき、あなたのJFrameの中のcontentPaneを追加するには、この

frame.setContentPane(panel); 

ような何かを忘れてしまった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); 

} 

}

答えて

0

を拡張しますjFrameをビルドします。この場合、独自のクラスをインスタンス化する必要があります。私はあなたのコードをminimunとリファクタリングして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); 
    } 
} 

基本的にはJFrameのを作成、のJPanelを作成し、このパネルには、コンポーネントを追加し、setContentPane(panel)であなたのフレームにパネルを設定します。

申し訳ありませんこれを今はテストできないため、必要に応じて誰かが修正できれば、本当に感謝しますが、このようなものです。

+0

あなたは大丈夫です=) – renanpallin

0

まず第一に、これはあなたがやろうとしていることにはかなり良い試みです。しかし、GUIをどのようにコーディングしているかについて、いくつかの基本的な誤解があるようです。

JavaでGUIを作成するには、2通りの方法があります。フレームとパネルオブジェクトを作成してコンポーネントを追加するか、extends JFrameで独自のクラスを作成して拡張することができます。しかし、この場合、あなたは両方をやろうとしました。 JFrameを拡張し、オブジェクトを作成しました。

私は実際にあなたがJFrameをどのように拡張しようとしていたのかとても気に入っていますので、これを続けて画面にものを追加するコードを作ってきました!

は、下記を参照してください - 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(); 
    } 
} 

は、この作業を取得します。両方のファイルをコンパイルして、test.javaでプログラムを実行します。

さらに、元のソリューションでは、newGUI()コールを追加していないので、すべてのコードが冗長になります。しかし、主な方法は静的なので、あなたはそれをとにかく呼び出すことはできません。

こちらがお役に立てば幸いです。

+0

意味があります、ありがとうございます。 –

+0

ようこそ。 –

関連する問題