2016-05-19 3 views
0

У меня есть диалог, написанный на Jython, который использует JComboBoxes с объектами. Это отлично работает в Jython 2.5, но не в Jython 2.1, который мне также необходимо поддерживать.JComboBox не использует строковое представление объекта в Jython 2.1

Класс выглядит примерно так:

class Item: 
    def __init__(self, item): 
     self.key = item["key"] 
     self.name = item["name"] 

    def __str__(self): 
     return self.name 

    def __unicode__(self): 
     return self.name 

    def __repr__(self): 
     return self.name 

    def toString(self): 
     return self.name 

    def safeRepr(self): 
     return self.name 

Я попытался реализации каждого метода, который я мог думать, что преобразует объект в строку, но в Jython 2.1 Я все еще получаю что-то вроде [email protected] вместо того, строковое представление в JComboBox.

Если я печатаю объект на консоли, он отлично работает и печатает представление, которое я определил.

Любая идея, что может быть проблемой и как я могу ее обойти?

ответ

0

Я не Jython 2.1 вокруг, но на 2.2 вы можете обойти эту проблему путем получения Item от java.lang.Object и первостепенную toString() так:

from javax.swing import JComboBox, JFrame, JPanel, WindowConstants 
from java.lang import Object 

class Item(Object): 
    def __init__(self, item): 
     self.key = item["key"] 
     self.name = item["name"] 

    def toString(self): 
     return self.name 

frame = JFrame("JComboBox using Jython objects") 
frame.setSize(150, 150) 

item1 = {'key': 'item1', 'name': 'First item'} 
item2 = {'key': 'item2', 'name': 'Second item'} 
combo_box = JComboBox([Item(item1), Item(item2)]) 

panel = JPanel() 
panel.add(combo_box) 
frame.add(panel) 
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE) 
frame.setVisible(True) 

 Смежные вопросы

  • Нет связанных вопросов^_^