在 java 中处理 IllegalComponentStateException。
java 8object oriented programmingprogramming更新于 2025/9/21 7:40:17
它是 IllegalStateException 的子类,这表示 AWT 组件未处于适当状态,即如果您正在使用组件但未正确使用它们会导致此异常。有几种情况会发生此异常
示例
在下面的示例中,我们尝试在将窗口的可见性设置为 true 后在此处构建一个示例登录表单,我们尝试按平台设置位置 true,这是不合适的。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoginDemo extends JFrame implements ActionListener {
JPanel panel;
JLabel user_label, password_label, message;
JTextField userName_text;
JPasswordField password_text;
JButton submit, cancel;
LoginDemo() {
// Username Label
user_label = new JLabel();
user_label.setText("User Name :");
userName_text = new JTextField();
// Password Label
password_label = new JLabel();
password_label.setText("Password :");
password_text = new JPasswordField();
// Submit
submit = new JButton("SUBMIT");
panel = new JPanel(new GridLayout(3, 1));
panel.add(user_label);
panel.add(userName_text);
panel.add(password_label);
panel.add(password_text);
message = new JLabel();
panel.add(message);
panel.add(submit);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Adding the listeners to components..
submit.addActionListener(this);
add(panel, BorderLayout.CENTER);
setTitle("Please Login Here !");
setLocationRelativeTo(null);
setSize(375,250);
setVisible(true);
setLocationByPlatform(true);
}
public static void main(String[] args) {
new LoginDemo();
}
@Override
public void actionPerformed(ActionEvent ae) {
String userName = userName_text.getText();
char[] password = password_text.getPassword();
if (userName.trim().equals("admin") && new String(password).trim().equals("admin")) {
message.setText(" Hello " + userName + "");
} else {
message.setText(" Invalid user.. ");
}
}
}
输出
Exception in thread "main" java.awt.IllegalComponentStateException: The window is showing on screen. at java.awt.Window.setLocationByPlatform(Unknown Source) at myPackage.LoginDemo.<init>(LoginDemo.java:51) at myPackage.LoginDemo.main(LoginDemo.java:55)
解决方案
在这种情况下,您可以通过将 false 传递给 setLocationByPlatform() 或将其完全删除来解决异常。
相关文章
打印
下一节:何时抛出 IllegalStateException 和 IllegalArgumentException?在 Java 中? ❯❮ 上一节:导致 Java 中出现 NoSuchElementException 的不同场景。

