簡體   English   中英

JComboBox定制編輯器JTable

[英]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 ; 

    }

}

她的照片說明了我到底想要什么

組合框表編輯器http://im47.gulfup.com/ECk9HK.png

從技術上講,可以將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM