2016-04-05 5 views
0

作業と、本当にこのコードのビットと困惑しています、何らかの理由で、私はデフォルトクローズ操作を設定すると、それは動作しません、と同じではありません。私はクラスをJFrameで拡張しました。私のプログラムには同じ名前の他のJFramesやJPanelsはありません。ああ、また、setVisibleとsetSizeは動作しますが、コンポーネントを追加したり、クローズ操作を設定したりするだけです。次に、makeWindow()の呼び出しを含むメソッドを呼び出すクラスを示します。setDefaultCloseOperationただGUIの使用を開始する

public static class Play implements ActionListener{ 
    public void actionPerformed(ActionEvent e){ 
     frame.setVisible(false); 
     game.playGame(); 
    } 

そして、ここでは、実際のメソッドです:

private void makeWindow() { 
    JFrame window = new JFrame("Battleships 2.0"); 
    JPanel canvas = new JPanel(); 

    JLabel title = new JLabel("Battleships 2.0"); 
    title.setFont(font); 

    JTextField userCoordinates = new JTextField(); 

    window.setSize(500,500); 
    window.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
    window.setResizable(false); 
    window.setVisible(true); 

    canvas.setLayout(new BoxLayout(canvas, BoxLayout.Y_AXIS)); 

    window.add(canvas); 
    canvas.add(title); 
    canvas.add(userCoordinates); 
} 
+3

は 'window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)を使用してみてください;' – Hackerdarshi

+2

"私はJFrameのと私のクラスを拡張してきた" ... 'JFrameのウィンドウ=新しいJFrameの( "戦艦2.0")で。 'あなたは普通の' JFrame'を作ります、どこが "あなたのクラス"ですか? –

+1

JFrameでクラスを拡張した場合、なぜ別のJFrameを作成するのですか( 'window')?それだけでアクションを実行してください。ところで、それは悪い習慣です。 – Hackerdarshi

答えて

3

あなたのクラスでのJFrameを拡張した場合、あなたはあなたのmethod.Youで再びJFrameのオブジェクトを作成する必要はありませんBOXLayoutを使用しています、あなたのテキストフィールドがパネル全体を占めており、ラベルが上に表示されます。 FlowLayoutを使用するようにコードを変更しただけで、コントロールがはっきりと見えます。この チェック:

private void makeWindow() { 
     // JFrame window = new JFrame("Battleships 2.0"); 
     setTitle("Battleships 2.0"); 
     JPanel canvas = new JPanel(); 

     JLabel title = new JLabel("Battleships 2.0"); 
     // title.setFont(font); 

     JTextField userCoordinates = new JTextField(10); 

     setSize(500, 500); 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setResizable(false); 
     setVisible(true); 

     canvas.setLayout(new FlowLayout()); 

     add(canvas); 
     canvas.add(title); 
     canvas.add(userCoordinates); 
    } 
+0

おかげでチームメイトそれをチェックアウト行くよ、私は...はい、私はそれを助けて –

+0

喜んで非常に良く、より簡単で見ることができ、私は時々ミスをするので、私は、Javaに新しいです、気づいたことがない:) –