(Я только начал программировать в java.) Итак, вот мой код!Попытка открыть новый Jframe из другого класса, нажав кнопку Jbutton
Main:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
public class buttons {{
/*Frame creation*/
final JFrame frameKontrast = new JFrame();
frameKontrast.setTitle("Main Menu");
frameKontrast.setSize(500,350);
frameKontrast.setLocationRelativeTo(null);
frameKontrast.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*JPanel creation*/
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
/*Okno dialogowe*/
final JLabel dialog = new JLabel();
dialog.setText("<html>Jestem bardzo długim bezsensownym dialogiem mam nawet kolejną bardzo długą bezsensowną część która istnieje tylko po to, by ten tekst był ow wiele, wiele dłuższy niż wszystkie inne oraz aby zmusić się do napisania skryptu ktory robi enter w tekście. Koniec.</html>");
JMenuBar menuKontrast = new JMenuBar();
frameKontrast.setJMenuBar(menuKontrast);
/*Przyciski wyboru*/
final JButton przyciskb = new JButton();
przyciskb.setText("Exit");
final JButton przyciska = new JButton();
przyciska.setText("Start the game");
/*Rozwijane menu (zadania)*/
JMenu objectives = new JMenu("Objectives");
JMenuItem zad1 = new JMenuItem("Zadanie numer 1");
JMenuItem zad2 = new JMenuItem("Zadanie numer 2");
JMenuItem zad3 = new JMenuItem("Zadanie numer 3");
/*Dołączanie obiektów do GUI*/
panel.add(dialog);
menuKontrast.add(objectives);
objectives.add(zad1);
objectives.add(zad2);
objectives.add(zad3);
ButtonGroup group = new ButtonGroup();
group.add(przyciska);
group.add(przyciskb);
panel.add(przyciska);
panel.add(przyciskb);
frameKontrast.getContentPane().add(panel);
frameKontrast.getContentPane().add(panel);
frameKontrast.setVisible(true);
}};
И вот новое окно, в котором я хочу открыть с помощью кнопки przyciska:
public class frameKontrastGame {{
{
JFrame frameKontrastGame = new JFrame();
frameKontrastGame.setTitle("Kontrast");
frameKontrastGame.setSize(1000,700);
frameKontrastGame.setLocationRelativeTo(null);
frameKontrastGame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
JLabel dialog = new JLabel();
dialog.setText("<html>Kontrast</html>");
JMenuBar menuKontrast = new JMenuBar();
frameKontrastGame.setJMenuBar(menuKontrast);
frameKontrastGame.setVisible(true);
panel.add(dialog);
frameKontrastGame.getContentPane().add(panel);
frameKontrastGame.getContentPane().add(panel);
frameKontrastGame.setVisible(true);
}}}
Я знаю, что его не лучший код. Он работает, и я доволен этим. Моя проблема в том, что я не могу использовать «этих» слушателей. Я надеюсь, что у кого-то есть немного времени, чтобы помочь мне с этой простой проблемой. Спасибо за чтение всего этого.
Вы не должны использовать 'this' -слушатели, даже если это возможно, так как это плохая практика программирования (как и открытие нескольких JFrames). Лучше использовать анонимный внутренний класс ActionListeners. Пожалуйста, посмотрите на это и отпустите его. –
Для примера анонимных слушателей внутреннего класса и действий см. [Эту ссылку] (http://stackoverflow.com/a/16875770/522444). –