English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Это подкласс 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() { // Метка имени пользователя user_label = new JLabel(); user_label.setText("Имя пользователя:"); userName_text = new JTextField(); // Метка пароля password_label = new JLabel(); password_label.setText("Пароль:"); password_text = new JPasswordField(); // Ввод submit = new JButton("ВВОД"); 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() или полностью удалив его.