Java 创建简单JFrame

Java 创建简单JFrame,java,swing,jframe,event-dispatch-thread,Java,Swing,Jframe,Event Dispatch Thread,我有问题,甚至我的JFrame很简单:我希望Frame带有2个JPanel一个带有TextArea,另一个带有两个按钮(保存,关闭),当我创建我的框架时,TextArea只是不带按钮出现,为了解决这个问题,我使用setVisible(true)出现两个面板,但出现以下错误: (Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: This operation is permitted on the

我有问题,甚至我的
JFrame
很简单:我希望Frame带有2个
JPanel
一个带有
TextArea
,另一个带有两个按钮(保存,关闭),当我创建我的框架时,
TextArea
只是不带按钮出现,为了解决这个问题,我使用
setVisible(true)
出现两个面板,但出现以下错误:

(Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: 
    This operation is permitted on the event thread only; currentThread = AWT-EventQueue-0
at com.sun.glass.ui.Application.checkEventThread(Application.java:443)
at com.sun.glass.ui.Cursor.setVisible(Cursor.java:107) for using setVisible(true))
这是我的代码:

JPanel textAreaGrid = new JPanel(new GridLayout(1, 0, 3, 3)); // gridlayout 1 row
textAreaGrid.add(new JScrollPane(textArea));
JPanel buttonPanel = new JPanel(new GridLayout(1, 0, 3, 3));
buttonPanel.add(new JButton("Save"));
buttonPanel.add(new JButton("End"));
JPanel mainPanel = new JPanel();
mainPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
mainPanel.setLayout(new BorderLayout(3, 3)); // main GUI uses border layout
mainPanel.add(textAreaGrid, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.PAGE_END);

JFrame frame = new JFrame("The Results");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);

setVisible(true);

为什么要两次使用setVisible(true)方法?要更快地获得更好的帮助,请发布一个or。但请先仔细阅读@JBNizet提供的链接内容。