Переход в другой класс по кнопке - JAVA

Решил всё же тут задать вопрос, так как не могу найти ответ на свой вопрос в интернете.

В общем захотелось мне сделать кнопку, которая будет переводить пользователя в другой JFrame класс.

Грубо говоря на подобии в HTML, переводящий на другую страницу этого же сайта.

В JAVA я грубо говоря новичок.

Буду благодарен всем, кто ответит на мой вопрос :)


Ответы (2 шт):

Автор решения: Agzam
MyJFrame1 frame1 = new MyJFrame1(); // MyJFrame1 extends JFrame
...

frame1.setVisible(false); // скрываем JFrame №1
MyJFrame2 frame2 = new MyJFrame2(); // MyJFrame2 extends JFrame
frame2.setVisible(true); // показываем JFrame №2
...

Так же можно вместо setVisible(false), можно попробовать использовать dispose()

PS: мне кажется лучше не скрывать/показывать JFrame-ы, а использовать JTabbedPane

Правка:

JButton btnNewButton = new JButton("JFRAME2");
btnNewButton.setFont(new Font("Acrom", Font.PLAIN, 22));
btnNewButton.addActionListener(e -> {
    frame.setVisible(false);
    frame2.setVisible(true);
}); 
btnNewButton.setBounds(238, 131, 178, 84); 
frame.getContentPane().add(btnNewButton);

Еще один вариант - использовать CardLayout Только теперь вам надо добавлять все компоненты не на jframe1 и jframe2, а на panel и panel2

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.CardLayout;
import javax.swing.JLabel;
import javax.swing.JButton;

public class MyFrame extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MyFrame frame = new MyFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MyFrame() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        CardLayout cardLayout = new CardLayout(0, 0);
        contentPane.setLayout(cardLayout);
        
        JPanel panel = new JPanel();
        contentPane.add(panel, "panel1");
        
        JButton button2 = new JButton("Open 2");
        panel.add(button2);
        
        JLabel l1 = new JLabel("Here JPanel №1");
        panel.add(l1);
        
        JPanel panel2 = new JPanel();
        contentPane.add(panel2, "panel2");
        
        JLabel l2 = new JLabel("Here JPanel №2");
        panel2.add(l2);
        
        JButton button1 = new JButton("Open 1");
        panel2.add(button1);
        
        button1.addActionListener(e -> {
            cardLayout.show(contentPane, "panel1");
        });
        button2.addActionListener(e -> {
            cardLayout.show(contentPane, "panel2");
        });
    }

}

→ Ссылка
Автор решения: Legend Developer

Решил всё таки использовать JFrame метод, т.к. мне нужен будет дизайнер, проблема лишь только с объявлением второго JFrame

stack

→ Ссылка