У меня есть следующий код:
package com.company;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
private static JLabel portText = new JLabel("Port:");
private static JLabel brokerAddressText = new JLabel("Broker ip address:");
private static JLabel topicText = new JLabel("Topic");
private static JLabel messageText = new JLabel("Message:");
private static JTextField port = new JTextField(4);
private static JTextField brokerAddress = new JTextField(10);
private static JTextField topic = new JTextField(10);
private static JTextField message = new JTextField(20);
private static JButton connect = new JButton("Connect");
private static JButton disconnect = new JButton("Disconnect");
private static JButton subscribe = new JButton("Subscribe");
private static JButton unsubscribe = new JButton("Unsubscribe");
private static JButton publish = new JButton("Publish");
private static int iPort;
private static String sIp;
public static void main(String[] args) {
JFrame jFrame = getFrame();
connect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
iPort = Integer.parseInt(port.getText());
sIp = brokerAddress.getText();
}catch (NumberFormatException exc){
System.out.println("Wrong port input");
}
}
});
}
private static JFrame getFrame(){
JFrame jFrame = new JFrame();
JPanel jPanel = (JPanel) jFrame.getContentPane();
jFrame.setVisible(true);
jFrame.setBounds(750,250,500,500);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.add(jPanel);
jFrame.setTitle("MQTT client");
portText.setLocation(10,10);
jPanel.add(portText);
port.setLocation(10,30);
jPanel.add(port);
jPanel.add(brokerAddressText);
jPanel.add(brokerAddress);
jPanel.add(connect);
jPanel.add(disconnect);
jPanel.add(topicText);
jPanel.add(topic);
jPanel.add(subscribe);
jPanel.add(unsubscribe);
jPanel.add(messageText);
jPanel.add(message);
jPanel.add(publish);
jPanel.revalidate();
return jFrame;
}
}
И когда я компилирую программу, у меня появляется следующая ошибка:
Exception in thread "main" java.lang.IllegalArgumentException: adding container's parent to itself at
java.desktop/java.awt.Container.checkAddToSelf(Container.java:497) at
java.desktop/java.awt.Container.addImpl(Container.java:1110) at
java.desktop/java.awt.Container.add(Container.java:1025) at
java.desktop/javax.swing.JFrame.addImpl(JFrame.java:553) at
java.desktop/java.awt.Container.add(Container.java:432) at
com.company.Main.getFrame(Main.java:50) at
com.company.Main.main(Main.java:26)
Я понимаю, что это из-за следующих строк:
JPanel jPanel = (JPanel) jFrame.getContentPane();
jFrame.add(jPanel);
Но я не понимаю, как добавить панель в другом случае.