Java中处理IllegalComponentStateException异常

它是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);

      //将侦听器添加到组件中。

      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()或完全删除它来解决该异常。

以上是 Java中处理IllegalComponentStateException异常 的全部内容, 来源链接: utcz.com/z/343234.html

回到顶部