在我的 Java Swing 应用程序中,我需要一个JComboBox
四列四行的。基本上,它是一个选择颜色的组合框。当组合框折叠时,用户可以看到第一行的四列,当它展开时,用户可以看到 4x4 形式的十六种颜色。
我不确定如何设计这样的组合框布局。我可以使用渲染器,但我不确定如何实现它。我只能看到两种可能性:
创建一个JLabel
命名的“ColorLabel”,它绘制一个圆并填充其构造函数中指定的圆的颜色。
- 创建一个面板“ColorRowPanel”并在其中添加四个 ColorLabel。创建四个 ColorRowPanel 对象并将其设置为组合框的模型。
- 创建一个
JTable
4x4 并在每个单元格中添加 ColorLabel。将 设置JTable
为 的模型JComboBox
。
这有可能吗?如果是这样,我应该在哪个对象中添加我的 ColorRowPanels/JTable 以设置为模型?And when a color is selected, I should be able to know which colorLabel or which row-col is selected to get the color selected by user.
更新 谢谢。根据您的指导,我开始了。
1) 创建了一个JToggleButton 类型的ColorButton类 - 只是为按钮创建一个形状。没有更多的实施。从这里获取的代码
2) 创建了一个扩展 AbstractColorChooserPanel 的类ColorContainer。创建了一个包含 4 个 btns 的面板,并将 4 个这样的面板添加到类中。还为面板的每个按钮实现了 ButtonGroup。如 CrayonPanel所示设计- 在buildChooser () 中添加了我的 initComponents()。构造函数为空。其余所有抽象方法现在都是空的。
3) 向 JCC 添加面板,使用 JDialog.createDialog 可以显示 ColorContainer。它来得很好,只是我不想要确定、取消、重置 btns。我在 JCC 类或网络上没有找到任何选项来隐藏 JCC dlg 的按钮面板。
4) 为了对 Panel 进行同样的尝试,我让 ColorContainer 扩展 JPanel 而不是 AbsColorChooserPanel,并在 Popup 中显示 ColorContainer,它显示得非常好。
我还不能解决两件事 - 1)主要 - 我想要这样的结果:
第一部分显示下拉列表何时折叠,第二部分显示下拉。无论下拉菜单是否显示或折叠,您都会看到第一个面板仍然可见。
到目前为止我得到的是:我添加了一个 JLAbel 并在 mouseEnter 事件中显示了弹出窗口。
我如何达到我想要的结果?想不出办法来实现这一点。
2)是否可以隐藏 JColorChooser 的 btns 并获得我期望的结果!
请指导我并帮助我。