所以我正在玩Jython,尝试将通用GUI拼凑在一起。没有超出他们在Jython Wiki上的内容了。所以我声明了一个JFrame,然后尝试添加一个面板,一些文本字段,所有这些好东西。但是,当我运行它时,我收到此错误。 “'NoneType'对象没有属性'add'”
这是我的基本代码。
from javax.swing import *
frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)
pnl = JPanel()
frame.add(pnl)
self.textfield1 = JTextField('username:',15)
pnl.add(self.textfield1)
self.textfield2 = JTextField('password:', 15)
pnl.add(self.textfield2)
mailButton = JButton('Login',actionPerformed=self.checkmail)
pnl.add(mailButton)
frame.pack()
frame.setVisible(True)
我知道崩溃的相关部分是'frame.add(pnl)',但上述错误。我想我会把其余部分扔到那里以防万一我犯了更大的错误。我觉得错误的地方在于我没有正确地将框架声明为JFrame,但我知道情况并非如此,因为如果我不尝试添加任何内容,它会创建框架。
感谢您提供任何建议或建议。
答案 0 :(得分:1)
在这一行:
frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)
您正在创建JFrame
,调用其setVisible
方法,并将setVisible
的返回值分配给frame
。 setVisible
doesn't return a value,frame
为None
。这会导致frame.add
失败。
无论如何,当您在最后调用setVisible
时,并且因为您可能不希望在向其添加其他组件并调用pack
之前使框架可见,只需删除{{ 1}}来电:
setVisible