Java JFRAME按钮然后新GUI
Java JFRAME按钮然后新GUI
所以,我尝试制作一个Java程序,当你运行它时,第一个屏幕将显示欢迎界面,下面是“登录”按钮,下面是“注册”按钮。现在我需要弄清楚,如果我按下其中一个按钮,如何调用一个新的GUI界面,我会在某个地方定义这个界面。(例如)我点击注册按钮,它调用一个新的界面,里面有正常的注册信息(登录、邮箱、密码、出生日期)。编辑:问题解决了,但还有一个问题。如何关闭第一个窗口?这是我目前的代码:\n
import javax.swing.*; import java.awt.*; import java.awt.GridLayout; import java.awt.BorderLayout; import javax.swing.BorderFactory; import java.awt.event.*; import java.util.*; import java.io.*; import java.util.*; import javax.swing.JFrame; import java.awt.Dimension; public class Gui extends JFrame { private JLabel lab1,lab2; private JButton butt1,butt2; private JPanel p1,p2; public static void main(String[] args) { Gui okno = new Gui(); //获取默认显示器的宽度和高度 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int width = (int) screenSize.getWidth(); int height = (int) screenSize.getHeight(); //窗口大小 Dimension appSize = new Dimension(210,250); okno.setPreferredSize(appSize); //设置窗口居中 okno.setLocation((width/2)-105,(height/2)-125); okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); okno.setVisible(true); //okno.setLocationRelativeTo(null); todle dá do středu obrazovky jen první body x a y od kterejch se to odvíjí okno.setResizable(false); okno.pack(); } public Gui(){ super("Jméno hry vole"); setLayout(new BorderLayout(20,20)); ///////////////////////////////////////////////////////////////// // p1 p1 = new JPanel(); add(p1,BorderLayout.NORTH); lab1 = new JLabel("Welcome",SwingConstants.CENTER); //居中标签 lab2 = new JLabel("Created by DECHKR",SwingConstants.CENTER); //居中标签 lab1.setFont(new Font("Serif", Font.PLAIN, 36)); //设置字体大小 p1.add(lab1); //p2 p2 = new JPanel(new GridLayout(2,1,0,5)); add(p2,BorderLayout.SOUTH); Dimension d = new Dimension(210,75); butt1 = new JButton("Login"); butt1.setPreferredSize(d); butt2 = new JButton("Register"); butt2.setPreferredSize(d); p2.add(butt1); p2.add(butt2); butt1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ //Gui okno = new Gui(); //System.exit(0); 终止整个JVM进程 } }); butt2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ } }); }
问题的原因是在Java中,当点击按钮时,想要创建一个新的GUI窗口,但是在现有的代码中并没有实现这个功能。解决方法是在按钮的动作监听器(ActionListener)的actionPerformed方法中创建一个新的JFrame对象,并设置窗口关闭的操作为EXIT_ON_CLOSE。
具体的解决方案是,在现有的代码中添加以下内容:
class button1Listener implements ActionListener { public void actionPerformed(ActionEvent ev){ JFrame frame = new JFrame(); // 在这里添加创建新窗口的代码 // ... frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
这样,在按钮被点击时,会创建一个新的JFrame窗口,并且设置了窗口关闭的操作为退出程序。