English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

معالجة استثناء IllegalComponentStateException في Java

أنه فرع من 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 + ");
      }
         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() أو إزالته بالكامل.

أنت قد تحب