Java 在Jython中创建基于Swing的GUI

Java 在Jython中创建基于Swing的GUI,java,swing,jython,Java,Swing,Jython,今天,我尝试使用jython创建一个使用swing的GUI。我不是专业的程序员,所以我决定尝试使用Netbeans IDE来设计接口,然后调整输出以在jython中使用,因为我在python方面比Java方面有更多的经验。在处理完代码后,我设法消除了所有语法错误,但仍然有一个错误,如下所示: Traceback (most recent call last): File "<path of file>", line 362, in <module> run

今天,我尝试使用jython创建一个使用swing的GUI。我不是专业的程序员,所以我决定尝试使用Netbeans IDE来设计接口,然后调整输出以在jython中使用,因为我在python方面比Java方面有更多的经验。在处理完代码后,我设法消除了所有语法错误,但仍然有一个错误,如下所示:

Traceback (most recent call last):
   File "<path of file>", line 362, in     <module>
run = InitGUI()
   File "<path of file>", line 358, in __init__
frame.show()
    at javax.swing.GroupLayout.checkParent(Unknown Source)

    at javax.swing.GroupLayout.invalidateLayout(Unknown Source)

    at java.awt.Container.invalidate(Unknown Source)

    at java.awt.Component.addNotify(Unknown Source)

    at java.awt.Container.addNotify(Unknown Source)

    at javax.swing.JComponent.addNotify(Unknown Source)

    at java.awt.Container.addNotify(Unknown Source)

    at javax.swing.JComponent.addNotify(Unknown Source)

    at java.awt.Container.addNotify(Unknown Source)

    at javax.swing.JComponent.addNotify(Unknown Source)

    at javax.swing.JRootPane.addNotify(Unknown Source)

    at java.awt.Container.addNotify(Unknown Source)

    at java.awt.Window.addNotify(Unknown Source)

    at java.awt.Frame.addNotify(Unknown Source)

    at java.awt.Window.show(Unknown Source)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)


java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: GroupLayout can only be used with one Container at a time
回溯(最近一次呼叫最后一次):
文件“”,第362行,在
run=InitGUI()
文件“”,第358行,在_init中__
frame.show()
位于javax.swing.GroupLayout.checkParent(未知源)
位于javax.swing.GroupLayout.invalidateLayout(未知源)
位于java.awt.Container.invalidate(未知源)
位于java.awt.Component.addNotify(未知源)
位于java.awt.Container.addNotify(未知源)
位于javax.swing.JComponent.addNotify(未知源)
位于java.awt.Container.addNotify(未知源)
位于javax.swing.JComponent.addNotify(未知源)
位于java.awt.Container.addNotify(未知源)
位于javax.swing.JComponent.addNotify(未知源)
位于javax.swing.JRootPane.addNotify(未知源)
位于java.awt.Container.addNotify(未知源)
位于java.awt.Window.addNotify(未知源)
位于java.awt.Frame.addNotify(未知源)
在java.awt.Window.show(未知源代码)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
java.lang.IllegalArgumentException:java.lang.IllegalArgumentException:GroupLayout一次只能与一个容器一起使用
现在,我不知道是什么原因导致了这一问题,也不知道如何/从哪里着手解决它

完整的源代码是

如果有人能看一看我会很感激的


谢谢

您在
JFrame
上设置了我以前从未见过的布局。。(通常设置
JFrame
的子组件的布局)

你能试试吗

layout = GroupLayout(frame.getContentPane())
frame.getContentPane().setLayout(layout)

另请参见。

您正在
JFrame
上设置布局,这是我以前从未见过的。。(通常设置
JFrame
的子组件的布局)

你能试试吗

layout = GroupLayout(frame.getContentPane())
frame.getContentPane().setLayout(layout)

另请参见。

+1。有趣的是,JFrame将所有调用转发到contentPane的情况变得很糟糕。GroupLayout的checkParent方法仅检查引用相等性,但contentPane!=JFrame,因为它没有针对JFrame.+1的特殊处理。有趣的是,JFrame将所有调用转发到contentPane的情况变得很糟糕。GroupLayout的checkParent方法仅检查引用相等性,但contentPane!=JFrame,因为它没有针对JFrame的特殊处理。