簡體   English   中英

在JFrame中調用JPanel

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM