[英]Call JPanel inside JFrame
我認為這是一件簡單的事情,但是我在Google中找不到對我有幫助的東西。
我有一個像菜單一樣擴展JPanel的類,用戶沒有單擊開始按鈕並調用另一個擴展JPanel的類,但是它不起作用。 我在主方法中調用的第一個類是簡單的JFrame,代碼如下:
JFrame tela = new JFrame("teste");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setSize(800,600);
tela.add(new InitialScreen());
tela.setVisible(true);
在InitialScreen中,我有一個帶有以下actionEvent的按鈕:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.add(new BackgroundGame());
this.validate();
this.revalidate();
this.setVisible(true);
}
但與此同時我按下按鈕,什么也沒有發生。
有人能幫我嗎?
謝謝。
您將需要在代碼中包含以下內容:
JButton button1 = new JButton("Button 1");
InitialScreen panel = new InitialScreen(); // I am assuming this is a JPanel
button1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO add your logic
}
});
panel.add(button);
tela.add(panel);
使用this
運算符時要小心。 如果您遵循我的示例,則將無法使用this
。 您將需要使用ActionEvent
對象來獲取源對象,或者需要引用一些全局變量。 例如您的情況下的tela
。
另外,我認為將InitialScreen
設為匿名對象也不是一個好主意。 您應該像上面一樣創建一個顯式實例。
按鈕應該在面板內部聲明,並且我顯示的邏輯應該在InitialScreen
面板類中。 在框架中,您唯一需要做的就是創建一個InitialScreen
實例並將其添加到框架中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.