Открыть новую панель нажатием кнопки - PullRequest
1 голос
/ 05 июня 2010

Java Swing GUI:

Я использую ActionListener, чтобы предварительно выполнить действие при нажатии кнопки. Что я хочу сделать, так это когда нажата кнопка, открыть новую панель, но загрузить / получить новую панель из другого файла.

Это то, что у меня есть, но я скорее просто ссылаюсь на другой файл. СПАСИБО! =]

   public void actionPerformed(java.awt.event.ActionEvent e) {
                    //something like this...
                    loadFile(newPlane.java);
}

Обновление:

        inventoryDisplay.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            inventoryDisplayActionPerformed(evt);
        }


        private void inventoryDisplayActionPerformed(java.awt.event.ActionEvent evt) {
        //open a new panel by opening a new file ex: inventory.java  
        }

причина, по которой я спрашиваю об этом, заключается в том, что, когда я создаю программу с графическим интерфейсом пользователя с NetBeans ... я понятия не имею, как создать новую планку с "представлением дизайна", когда кнопка будет нажата Поскольку netbeans отображает только основную панель.

Ответы [ 2 ]

2 голосов
/ 05 июня 2010

Java не работает на основе включений, поэтому вам нужно определить классы и создать их экземпляры.

Вы можете создать статический фабричный метод для получения полностью сконфигурированной JPanel:

public class ClassWhereStored {
    public static JPanel newJPanel(){
        JPanel panel = new JPanel();
        // configure it
        return panel;
    }
}

...

public void actionPerformed(java.awt.event.ActionEvent e) {
    JPanel panel = ClassWhereStored.newPanel()
    frame.add(panel);          
}
1 голос
/ 07 июня 2010

Для вашего кода вам нужно поместить файл класса в ту же папку.

т. Е. По отношению к следующему коду ...

public void actionPerformed(java.awt.event.ActionEvent e) {
    //something like this...
    loadFile(newPlane.java);
}

... вам нужно скомпилировать newPlane.java, взять созданный файл класса и поместить его в ту же папку, что и ваш класс, который пытается «загрузить файл».

Затем в вашем классе (я предполагаю, что он расширяет JFrame или JPanel), вам нужно сделать это вместо loadFile:

public void actionPerformed(java.awt.event.ActionEvent e) {
    newPlane plane = new newPlane();
    add(plane);
}

Обычно проще написать код класса в одном месте. Не забывайте, что вам, возможно, придется удалить компоненты из вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...