2017-01-21 18 views
1

私は作業しているプログラムのメニューを作成するためにレイヤードペインを使用しようとしていますが、ボタンは表示されません。私はそれが何であるか把握していないようです...ボタンが表示されないのはなぜですか?

public class FlashcardGUI { 

public static void main(String[] args) 
{ 
    JFrame projectFrame = new JFrame("StudyFast Flashcard"); 
    projectFrame.setName("StudyFast Flashcards"); 
    projectFrame.setSize(1000,600); 
    projectFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    projectFrame.setVisible(true); 


    JLayeredPane projectLayeredPane = new JLayeredPane(); 
    projectFrame.setContentPane(projectLayeredPane); 

    JPanel projectMenu1 = new JPanel(); 
    projectLayeredPane.setLayer(projectMenu1, 0); 

    final JButton startNow = new JButton(); 
    startNow.setText("Exit"); 
    startNow.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
       { 
        System.exit(0); 
       } 
     }); 



    projectFrame.add(projectLayeredPane); 
    projectLayeredPane.add(projectMenu1); 
    projectMenu1.add(startNow); 
    } 
} 
+0

あなたが理想的FlashcardGUIは私ではないだろう、個人的にcricket_007 @ JFrameの –

+1

を延長すべきである、私はせいぜい 'JPanel'からそれを拡張したい、それはより多くの柔軟性、拡張性、およびコンポーネントがどのようにオーバーに制御することができます表示される – MadProgrammer

+0

@MadProgrammerはすべて主要な機能に依存しています。 –

答えて

2

メインメソッドの最後にこれらの2行を挿入します。ボタンを表示させるためには、順序が重要です。

projectFrame.pack(); 
projectFrame.setVisible(true); 

(すでにライン9に持ってprojectFrame.setVisible(true);を削除することを確認してください)

2

私はあなたのコードを更新して、それが今取り組んでいます。コード内の問題のインラインコメントを参照してください。お役に立てれば。

public class FlashcardGUI2 { 

public static void main(String[] args) { 
    JFrame projectFrame = new JFrame("StudyFast Flashcard"); 
    projectFrame.setName("StudyFast Flashcards"); 
    projectFrame.setSize(1000,600); 
    projectFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    projectFrame.setVisible(true); 
    JLayeredPane projectLayeredPane = new JLayeredPane(); 
    LayoutManager layout = new FlowLayout(); //creating a FlowLayout object 
    projectLayeredPane.setLayout(layout); //adding the layout to JLayeredPane 
              //because JLayeredPane do not have default layout of 
              //its own. The reason you were not 
              //getting the button displayed 
    projectLayeredPane.setPreferredSize(new Dimension(300, 310)); 
    JPanel projectMenu1 = new JPanel(); 
    final JButton startNow = new JButton(); 
    startNow.setText("Exit"); 
    startNow.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        System.exit(0); 
       } 
     }); 
    projectLayeredPane.add(projectMenu1,new Integer(50)); 
    projectLayeredPane.add(startNow,new Integer(10)); 
    projectFrame.add(projectLayeredPane); 
    projectFrame.pack(); 
    } 
} 
関連する問題