2013-06-05 6 views
0

Это мой код: -Путаница в JTextField() из Jython в sikuli

from javax.swing import * 

    class Example(JFrame): 
     def __init__(self): 
      super(Example, self).__init__() 

      self.initUI() 

     def initUI(self): 

      panel = JPanel() 
      panel.setLayout(None) 
      self.getContentPane().add(panel) 

      panel.setLayout(None) 

      area = JTextField('',15) 
      panel.add(JLabel("username:", SwingConstants.RIGHT)) 
      panel.add(area) 

      self.setTitle("Quit button") 
      self.setSize(600, 400) 
      self.setLocationRelativeTo(None) 
      self.setVisible(True) 

     def onQuit(self, e): 
      System.exit(0) 


    if __name__ == '__main__': 
     Example() 

Здесь я просто пытаюсь сделать использования JTextField(), так что я могу получить некоторый входной сигнал от пользователя. Но после запуска это окно было пустым, в окне не было текстового поля. Я запустил его в sikuli r930 на окнах 7. Может ли кто-нибудь сказать мне, что пошло не так?

ответ

0

Я думаю, что в вашем коде есть проблема с компоновкой. Попробуйте установить макет вместо «Нет». Исправлена ​​функция initUI может выглядеть следующим образом:

def initUI(self): 
    panel = JPanel() 
    panel.setLayout(FlowLayout(FlowLayout.CENTER,1,150)) 
    self.getContentPane().add(panel) 
    area = JTextField('',15) 
    panel.add(JLabel("username:", SwingConstants.RIGHT)) 
    panel.add(area) 
    self.setTitle("Quit button") 
    self.setSize(600, 400) 
    self.setLocationRelativeTo(None) 
    self.setVisible(True) 

Дополнительный импорт линии необходимо в этом случае:

from java.awt import FlowLayout 
+0

Да, он работает, но не могли бы вы сказать мне, как установить местоположение текстового поля. На данный момент, когда я выполняю этот код, текстовое поле появляется в северном центральном положении. Кроме того, я добавил две кнопки в код, они также появились на северо-центральной позиции. Есть ли способ, которым я могу установить местоположение для «FlowLayout»? –

+0

Я обновил свой ответ. Текстовое поле теперь отображается в центральной части кадра. Подробнее о FlowLayout: http://docs.oracle.com/javase/tutorial/uiswing/layout/flow.html. Вы также можете использовать любой другой макет. –