Переход в другой класс по кнопке - JAVA
Решил всё же тут задать вопрос, так как не могу найти ответ на свой вопрос в интернете.
В общем захотелось мне сделать кнопку, которая будет переводить пользователя в другой JFrame класс.
Грубо говоря на подобии в HTML, переводящий на другую страницу этого же сайта.
В JAVA я грубо говоря новичок.
Буду благодарен всем, кто ответит на мой вопрос :)
Ответы (2 шт):
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");
});
}
}
Решил всё таки использовать JFrame метод, т.к. мне нужен будет дизайнер, проблема лишь только с объявлением второго JFrame
