[英]JComboBox custom editor JTable
我想將Jtable添加到JComboBox編輯器,所以當我選擇ComboBox時,將顯示JTable。
我不能使用table.removeActionListener()和table.addActionListener()。 我們新功能
table.addAncestorListener(addAncestorListener監聽器)和
table.removeAncestorListener(addAncestorListener監聽器)
到目前為止,她是我的密碼,
public class CustomComboEditor implements ComboBoxEditor {
private JTable table ;
public CustomComboEditor() {
table = new JTable();
}
@Override
public void addActionListener(ActionListener l) {
// there is no addActionListener(l) for table
}
@Override
public Component getEditorComponent() {
return table ;
}
@Override
public Object getItem() {
return table.getValueAt(table.getSelectedRow(), table.getSelectedColumn());
}
@Override
public void removeActionListener(ActionListener l) {
// there is no removeActionListener(l);for table
}
@Override
public void selectAll() {
table.selectAll();
}
@Override
public void setItem(Object anObject) {
return ;
}
}
她的照片說明了我到底想要什么
從技術上講,可以將JTable
用作ComboBoxEditor
,但結果可能很麻煩。 而是將所需的TableModel
實例添加到組合的ComboBoxModel
並使用setModel()
在相鄰的JTable
顯示選定的模型。 總結如下, 這里顯示了一個完整的示例。
DefaultComboBoxModel dcbm = new DefaultComboBoxModel();
private JComboBox combo = new JComboBox(dcvm);
…
for (int i = 0; i < N; i++) {
…
TableModel model = new YourTableModelModel(name);
dcbm.addElement(model);
}
…
combo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TableModel model = (TableModel) combo.getSelectedItem();
table.setModel(model);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.