(我刚开始用java编程) 所以这里是我的代码!试图通过单击Jbutton来打开新的Jframe窗体另一个类
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)以获取匿名内部类侦听器和Actions的示例。 –