2017-01-09 2 views
0

JFrameとパネルを作成するクラスが他のクラスから拡張されているときに大きな問題が発生する、そのクラスのアイテム、私は+1のフレームを持っています。だから私は望んでいない追加のフレームがあります。コードは次のとおりです。)そのクラスが他のクラスによって拡張されているときに追加のJFramesを防ぐ方法

public static void main(String[] args) { 
    GameStart game; 
    game = new GameStart(); 
    game.gReady(); 
} 

public class GameStart extends JFrame{ 

protected JPanel panel, headline; 
protected BorderLayout border; 
protected GridLayout grid, head; 
protected JLabel question; 
protected JButton[] button; 
protected JLabel label; 
protected JLabel empty; 

public GameStart(){ 
    setSize(500,400); 
    setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
    setLocationRelativeTo(null); 

    panel = new JPanel(); 
    headline = new JPanel(); 

    question = new JLabel(); 

    button = new JButton[4]; 
    for(int i=0;i<4;i++){ 
     button[i] = new JButton(); 
     panel.add(button[i]); 
    } 

    label = new JLabel(); 
    empty = new JLabel(); 

    border = new BorderLayout(); 

    grid = new GridLayout(4,1); 
    head = new GridLayout(1,0); 

    headline.add(question); 
    headline.setLayout(head); 

    setLayout(border); 
    panel.setLayout(grid); 

    add(panel, BorderLayout.WEST); 
    add(headline, BorderLayout.PAGE_START); 

    panel.setVisible(true); 
    headline.setVisible(true); 
    setVisible(true); 
} 

これは私がlanguageMenu(

public void gReady(){ 
    GameMenu game; 
    game = new GameMenu(); 
    game.languageMenu(); 
} 

を見つけることを試みたように)問題のクラスであっても、空が、GameMenu(であることができるGameStart()を拡張する必要があります。他の「子」クラスが余分なフレームを作成しないようにする方法はありますか?

public class GameMenu extends GameStart { 
    public GameMenu(){} 
    public void languageMenu(){} 
} 

答えて

1

GameStartのコンストラクタでsetVisableを呼び出すので、作成時にポップアップするためです。 そこから削除し、JFrameを表示したいときにだけ呼び出します。

また、なぜGameMenuで拡張しますか?別のJFrameを作成するだけです

+0

私はJFrameを他のクラスから変更して、それらに絡ませる必要があります。お手伝いありがとう :) – lookatme

関連する問題