Вы можете создать ComboBoxEditor чей компонент (возвращаемый getEditorComponent) является JTree
Хотя вы, возможно, уже пробовал.
Я не знаю, как это будет выглядеть. Опубликуйте снимок экрана, если вы заработаете. :)
EDIT
Я даю ему быстро грязного попробовать. Это ужасно, но это начало.
alt text http://img120.imageshack.us/img120/2563/yiakxk2.png
Вот код, для того, что стоит. :(
Вероятно, вы должны начать думать в альтернативах. А как насчет поддельного Combo, который является JButton без границ при нажатии скрытой панели появится с деревом на дисплее.
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class ComboTree {
public static void main(String [] args) {
JComboBox c = new JComboBox(new String [] { "Hello", "there"});
c.setModel(new CustomComboModel());
c.setEditor(new TreeComboEditor());
c.setRenderer(new TreeComboEditor());
JFrame frame = new JFrame();
frame.add(c , BorderLayout.NORTH) ;
frame.pack();
frame.setVisible(true);
}
}
class CustomComboModel implements ComboBoxModel {
public Object getSelectedItem() { return ":P"; }
public void setSelectedItem(Object anItem) {}
public void addListDataListener(ListDataListener l) {}
public Object getElementAt(int index) { return "at " + index ; }
public int getSize() { return 2; }
public void removeListDataListener(ListDataListener l) {}
}
class TreeComboEditor implements ComboBoxEditor, ListCellRenderer {
// Editor interface
public void addActionListener(ActionListener l) {}
public Component getEditorComponent() {
return new JTree() ;
}
public Object getItem() { return "";}
public void removeActionListener(ActionListener l) {}
public void selectAll() {}
public void setItem(Object anObject) {}
// Render interface
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
return new JTree();
}
}
Но не потеряет ли поведение разворота расширения – OscarRyz 2008-12-10 22:06:59
Возможно, вы немного изменили код, найденный в [Учебник Java на ComboBox] (http://docs.oracle.com/javase/tutorial/uiswing/components /combobox.html#renderer), чтобы соответствовать вашим объяснениям ... – Matthieu 2014-10-06 08:51:43