java GUI Form открыть другую форму кнопку onclick - PullRequest
0 голосов
/ 24 января 2019

Пытаюсь сделать при нажатии кнопки из формы1 открыть форму2.Это звучит очень просто, но я не могу найти способ сделать это. Я использую Java Intellij.Когда я использовал NetBeans и Swing, я делал это с: "Form2 form2 = new Form2 ();

form2.setVisible (true);

dispose ();"

Form1 (Main):

public class Main {
    private JButton b_show;
    private JButton b_Add;
    private JPanel jp_main;


    public Main() {

        b_show.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {

            }
        });
    }


    public static void main(String[]args){
        JFrame frame=new JFrame();
        frame.setContentPane(new Main().jp_main);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        frame.setVisible(true);


    }

}

form2 (Показать):

public class Show {
    private JButton b_back;
    public JPanel jpanelmain;


    public Show() {
        Show show=new Show();
        geriButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {

            }
        });
    }

    public static void main(String[]args){
        JFrame frame=new JFrame();
        frame.setContentPane(new Show().jpanelmain);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        frame.setVisible(true);

    }

}

Кто-нибудь может мне помочь?

при нажатии b_show открыть форму2 (Показать).

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вот mcve , демонстрирующий это

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

    private final JButton b_show;
    private final JPanel jp_main;

    public Main() {
        jp_main = new JPanel();
        b_show = new JButton("Show");
        b_show.addActionListener(actionEvent -> {
            new Show();
        });
        jp_main.add(b_show);
    }
    public static void main(String[]args){
        JFrame frame=new JFrame();
        frame.setContentPane(new Main().jp_main);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        frame.setVisible(true);
    }
}

class Show {
    private JButton b_back;
    public JPanel jpanelmain;


    public Show() {
        createAndShowGui();
    }

    void createAndShowGui(){

        JFrame frame=new JFrame();
        frame.setLocationRelativeTo(null);
        jpanelmain = new JPanel();
        b_back = new JButton("Back");
        jpanelmain.add(b_back);
        frame.setContentPane(jpanelmain);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        frame.setVisible(true);
    }
} 

Однако, пожалуйста, прочитайте Использование нескольких JFrames: хорошая или плохая практика?

0 голосов
/ 24 января 2019

Лучший способ сделать это - использовать JDialogs. Когда вызывается actionPerformed() в «Form1», вы создаете экземпляр нового JDialog и делаете его видимым. Вот пример:

public class Show extends JDialog {

    private JButton b_back;
    public JPanel jpanelmain;

    public Show(Frame owner, boolean modal) {
        super(owner, modal);
    }

    //method that creates the GUI   
}



b_show.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        Show show = new Show(JOptionPane.getFrameForComponent(this), true);
        show.setVisible(true);
    }
});

Наконец, когда вы хотите закрыть диалог, внедрите в него actionPerformed() и вызовите метод dispose()

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