gpt4 book ai didi

java - 无法关闭 Windows 并打开其他窗口

转载 作者:行者123 更新时间:2023-12-01 17:58:29 26 4
gpt4 key购买 nike

我正在使用 Java8,并且我正在尝试使用代码从一个框架移动到另一个框架。

问题:第一个 JPanel 未关闭当我尝试关闭窗口时,第二个 JPanel 出现错误

错误消息:

线程“AWT-EventQueue-0”中出现异常 java.lang.NullPointerException 在 ex2.Main2$2.actionPerformed(Main2.java:60) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Component.processMouseEvent(Component.java:6539) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6304) 在 java.awt.Container.processEvent(Container.java:2239) 在java.awt.Component.dispatchEventImpl(Component.java:4889) 在 java.awt.Container.dispatchEventImpl(Container.java:2297) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) 在java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) 在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) 在 java.awt.Container.dispatchEventImpl(Container.java:2283) 在java.awt.Window.dispatchEventImpl(Window.java:2746) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) 在 java.awt.EventQueue$4.run(EventQueue.java:733) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:730) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

请帮忙。

第一帧:

public class ex2 {

private JFrame frmLogin;
private JTextField textField;
private JPasswordField passwordField;

//cuted the methods to start the frame

private void initialize() {
frmLogin = new JFrame();
frmLogin.getContentPane().setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.setTitle("Login");
frmLogin.setBounds(100, 100, 400, 300);
frmLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmLogin.getContentPane().setLayout(null);

JLabel lblUserName = new JLabel("Username");
lblUserName.setBounds(130, 40, 150, 15);
lblUserName.setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.getContentPane().add(lblUserName);

JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(130, 100, 150, 15);
lblPassword.setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.getContentPane().add(lblPassword);

textField = new JTextField();
textField.setBounds(130, 70, 150, 19);
textField.setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.getContentPane().add(textField);
textField.setColumns(10);

passwordField = new JPasswordField();
passwordField.setBounds(130, 130, 150, 19);
passwordField.setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.getContentPane().add(passwordField);

JButton btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String user = textField.getText();
String pass = String.copyValueOf(passwordField.getPassword());

if (user.equals("Rod") && pass.equals("123")) {
Main2 segundo = new Main2();

segundo.setVisible(true);
ex2.setVisible(false);

}
}
});
btnLogin.setBounds(130, 190, 150, 25);
btnLogin.setFont(new Font("Dialog", Font.BOLD, 18));
frmLogin.getContentPane().add(btnLogin);

}

第二帧

public class Main2 extends JFrame {

private JPanel contentPane;
private static Main2 frame2;

public Main2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 400, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblEntramos = new JLabel("Entramos");
lblEntramos.setFont(new Font("Dialog", Font.BOLD, 22));
lblEntramos.setBounds(150, 100, 200, 15);
contentPane.add(lblEntramos);

JButton btnSair = new JButton("Sair");
btnSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
frame2.setVisible(false);
}
});
btnSair.setBounds(125, 175, 150, 25);
contentPane.add(btnSair);
}
}

最佳答案

我使用以下代码复制了您的登录表单,但没有收到任何错误..

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class ex3 extends JFrame {

public JPanel contentPane;
private JTextField textField;
private JPasswordField passwordField;


/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ex3 frame = new ex3();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public ex3() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);



JLabel lblUserName = new JLabel("Username");
lblUserName.setBounds(130, 40, 150, 15);
lblUserName.setFont(new Font("Dialog", Font.BOLD, 18));
contentPane.add(lblUserName);

JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(130, 100, 150, 15);
lblPassword.setFont(new Font("Dialog", Font.BOLD, 18));
contentPane.add(lblPassword);

textField = new JTextField();
textField.setBounds(130, 70, 150, 19);
textField.setFont(new Font("Dialog", Font.BOLD, 18));
contentPane.add(textField);
textField.setColumns(10);

passwordField = new JPasswordField();
passwordField.setBounds(130, 130, 150, 19);
passwordField.setFont(new Font("Dialog", Font.BOLD, 18));
contentPane.add(passwordField);

JButton btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String user = textField.getText();
String pass = String.copyValueOf(passwordField.getPassword());

if (user.equals("Rod") && pass.equals("123")) {
Main2 segundo = new Main2();

segundo.setVisible(true);
setVisible(false);

}
}
});
btnLogin.setBounds(5, 196, 424, 60);
btnLogin.setFont(new Font("Dialog", Font.BOLD, 18));
contentPane.add(btnLogin);
}

}

您确定您“剪切”的表单代码没有犯任何错误吗?

关于java - 无法关闭 Windows 并打开其他窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com