Jython - попытка вызова функций из JFrame, ошибка «NoneType» - PullRequest
0 голосов
/ 03 октября 2010

Так что я играю с Jython, пытаясь собрать воедино общий графический интерфейс.Ничего, кроме того, что есть в 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 должным образом, но я знаю, что это не так, потому что он просто создает фрейм, если я не пытаюсь что-то добавить к нему.

Спасибоза любые ваши советы или предложения.

1 Ответ

1 голос
/ 03 октября 2010

В этой строке:

frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None).setVisible(True)

вы создаете JFrame, вызываете его метод setVisible и присваиваете возвращаемое значение setVisible для frame.setVisible не возвращает значение , поэтому frame равно None.Это приводит к сбою frame.add.

Когда вы в любом случае вызываете setVisible в конце, и потому, что вы, вероятно, не хотите делать кадр видимым, прежде чем добавите в него другие компоненты и вызовете pack, просто удалите setVisible звонок:

frame = JFrame('E-mail Gathering', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size =(600,400), locationRelativeTo = None)
...