我需要創建一個多選的組合框,如何實現?如何使用多選選項創建Combobox?
回答
沒有與創建自定義組合框彈出內容(如多選帶有一個列表)的幾個基本問題:
默認UI顯示JList中使用的內容,從而改變這種行爲,你將不得不改變整個ComboBoxUI
2.您不能簡單地將默認組合框列表更改爲多選列表,因爲只有一個值在最後被「選中」,並且列表中有默認的滾動選擇鼠標監聽器,這將使您無法選擇更多比一個元素
所以我建議你給我們使用簡單的JList代替組合框,或者使用一些擴展組件庫(如JideSoft) - 它們具有此組件以及更多使用Swing功能無法快速創建的組件。
好點,非常感謝。 – manhnt 2012-04-03 16:05:27
它只是我已經試圖改變組合框彈出成樹狀,我失敗了 - 這一嘗試花了差不多一天。所以這就是爲什麼我建議使用JList或作爲一個選項 - JButton彈出包含任何組件/編輯器你喜歡。 – 2012-04-03 23:35:18
我知道,這個問題已很舊,但對於那些,誰仍在尋找這個問題的解決方案,請嘗試以下代碼:
public class ComboSelections {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel((LookAndFeel) Class.forName("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel").newInstance());
final JPopupMenu menu = new JPopupMenu();
JMenuItem one = new JCheckBoxMenuItem("One");
JMenuItem two = new JCheckBoxMenuItem("Two");
JMenuItem three = new JCheckBoxMenuItem("Three");
JMenuItem four = new JCheckBoxMenuItem("Four");
menu.add(one);
menu.add(two);
menu.add(three);
menu.add(four);
final JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!menu.isVisible()) {
Point p = button.getLocationOnScreen();
menu.setInvoker(button);
menu.setLocation((int) p.getX(),
(int) p.getY() + button.getHeight());
menu.setVisible(true);
} else {
menu.setVisible(false);
}
}
});
one.addActionListener(new OpenAction(menu, button));
two.addActionListener(new OpenAction(menu, button));
three.addActionListener(new OpenAction(menu, button));
four.addActionListener(new OpenAction(menu, button));
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add(button);
frame.getContentPane().add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static class OpenAction implements ActionListener {
private JPopupMenu menu;
private JButton button;
private OpenAction(JPopupMenu menu, JButton button) {
this.menu = menu;
this.button = button;
}
@Override
public void actionPerformed(ActionEvent e) {
menu.show(button, 0, button.getHeight());
}
}
}
不錯的解決問題的方法) – Denis 2016-01-19 09:03:30
- 1. 如何創建具有多選選項功能的Combobox?
- 2. 如何使用選項創建選擇多個表單?
- 3. 如何創建多個付款選項
- 4. 插件選項 - 如何創建多個選項集
- 5. 使用Smarty創建選擇選項
- 6. 選擇選項使用jquery創建
- 7. 多選Selection Combobox
- 8. 如何創建選項欄
- 9. 如何使用多個選擇選項
- 10. 如何使用bluemix創建多個登錄選項?
- 11. 如何使用列表項創建多個選擇器
- 12. 如何使用OptionTree創建多個「主題選項」頁面?
- 13. 如何在Qt中使用QTabWidget創建多行選項卡?
- 14. 如何使用多個選項創建UIAlertView?
- 15. 如何使用多個選項創建輸入表單?
- 16. extJS如何創建多選?
- 17. 如何使用可選選項創建UITableView?
- 18. 如何動態創建使用JQuery選擇選項?
- 19. 用於ComboBox的EventFilter選項
- 20. 如何創建多選選項?或將屬性添加到models.CharField
- 21. 如何創建動態單選按鈕與多個選項
- 22. Vim:cnext:cprev創建新選項卡,如何使用相同的選項卡?
- 23. 如何創建一個多行選項菜單項(SubMenu)
- 24. 如何創建一個多選擇框出選定的選項笨
- 25. 如何使用在ReactJS中選擇,並使用陣列創建其選項
- 26. 如何使用變量選擇ComboBox項目?
- 27. AngularJS使用選項迭代創建選項列表
- 28. 使用ng2-bootstrap選項卡創建動態選項卡
- 29. 如何使用「包含所有」選項對多對多建模
- 30. 如何在python中選擇GTK combobox中的多個項目
這裏是你的答案:http://stackoverflow.com/ a/2860376/32090 – 2012-04-03 11:08:51
我建議使用[JList](http://docs.oracle.com/javase/6/docs/api/javax/swing/JList.html)。 – flash 2012-04-03 11:10:05
@Andrew Thompson:不錯的建議:) – manhnt 2012-04-26 02:14:08