处理 java 中的 IllegalComponentStateException。
这是 IllegalStateException 的子类,表明 AWT 组件不在适当的状态中,即如果您正在使用组件,但未正确使用它们,则会导致此异常。此异常发生在多种情况下
示例
在以下示例中,我们尝试构建一个示例登录表单,在将窗口的可见性设置为 true 之后,我们尝试通过 platform 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() 或完全将其删除来解决异常问题。
广告