2016-05-07 3 views
0

以下、JFrameクラスを作成しています(重要な部分はクラスの下に掲載されています)。 UserInterfaceオブジェクトを作成するときには、eventListenerをアクティブにするときにすべてがうまく動作します。このコードセクションは、(Java GUI)removeAll()メソッドの後にメソッドを返すJPanelが表示されない

getContentPane().removeAll(); 
getContentPane().add(gameScreen()); 
getContentPane().validate(); 
getContentPane().repaint(); 

が必要としているようです。 removeAll()メソッドは機能しますが、JFrameにパネルを返すgameScreenメソッドを追加しても何も行われません。どんな考え?

public class UserInterface extends JFrame{ 

public UserInterface(){ 
    super("idk"); 
    setName("idk"); 
    setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBackground(Color.WHITE); 
    setResizable(false); 
    setLocationRelativeTo(null); 
    add(startScreen()); 
    setVisible(true); 
}//UserInterface 

private class beginButtonListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     getContentPane().removeAll(); 
     getContentPane().add(gameScreen()); 
     getContentPane().validate(); 
     getContentPane().repaint(); 
    } 
}//beginButtonListener 

public JPanel gameScreen(){ 

    JPanel gamePanel = new JPanel(); 
    gamePanel.setName("gamePanel"); 
    gamePanel.setLayout(null); 

    JLabel fadeShade = new JLabel(); 
    fadeShade.setName("fadeShade"); 
    fadeShade.setBackground(Color.BLUE); 
    fadeShade.setBounds(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); 
    gamePanel.add(fadeShade); 
    return gamePanel; 
}//gameScreen 
}//UserInterface 

答えて

2

あなたのgamePanelは追加される可能性がありますが、表示されることはありません。ラベルにテキストを入れずにJLabelを追加し、ラベルを不透明にすることなくラベルの背景色を設定します。あなたはまた、非常に危険なことであるヌルレイアウトを使用します。

これは私のコードであれば、私は部品

  • は疫病のようなnullレイアウトを避け、代わりにレイアウトマネージャは、私のために重いレイアウトリフティングをやらせる交換することCardLayoutを使用し

    • を思います。
    • テキストを表示する必要があるJLabelのテキストを設定してください。 JLabelの名前プロパティを設定することは、おそらく私を助けません。
  • +0

    これはずっと間違っていました。それを指摘してくれてありがとう!私は間違いなくこれらの変更を行います。 – Eric

    関連する問題