Java JFRAME按钮然后新GUI

11 浏览
0 Comments

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){
             }
         });
}

0
0 Comments

问题的原因是在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窗口,并且设置了窗口关闭的操作为退出程序。

0