在我的Java Swing应用程序中,我需要一个包含四列和四行的JComboBox
。基本上,它是一个选择颜色的组合框。折叠组合框时,用户可以看到第一行的四列,当它展开时,用户可以看到16x4x4形式的颜色。
我不知道如何设计这样的组合框布局。我可以使用渲染器,但我不确定如何实现它。我只能看到两种可能性:
创建一个名为“ColorLabel”的JLabel
,它绘制一个圆并填充其构造函数中指定的圆的颜色。
JTable
并在每个单元格中添加ColorLabel。将JTable
设置为JComboBox
。这有可能吗?如果是这样,我在什么对象中添加我的ColorRowPanels / JTable来设置为模型?选择颜色后,我应该能够知道选择哪个colorLabel或哪个row-col来获取用户选择的颜色。
更新 谢谢。根据你的指导,我开始了。
1)创建了类型为JToggleButton的类 ColorButton - 只是为按钮创建一个形状。没有更多的实施。代码取自here
2)创建了一个扩展AbstractColorChooserPanel的类 ColorContainer 。创建了一个4 btns的小组,并在课堂上添加了4个这样的小组。还将ButtonGroup实现到面板的每个按钮。设计如CrayonPanel所示 - 在buildChooser()中添加了我的initComponents()。构造函数是空的。其余所有抽象方法都是空的。
3)向JCC添加了面板,使用JDialog.createDialog可以显示ColorContainer。它没问题,只是我不想要Ok,Cancel,Reset btns。我没有在JCC类或网上找到任何选项来隐藏JCC dlg的按钮面板。
4)为了尝试使用Panel,我将ColorContainer扩展为JPanel而不是AbsColorChooserPanel,并在Popup中显示ColorContainer,它显示得非常好。
我还没办法解决2件事 - 1)主要 - 我想要这样的结果:
第一部分显示下拉列表何时崩溃&第二次显示时。无论下拉显示还是折叠,您都会看到第一个面板仍然可见。
我到现在所做的是:我添加了一个JLAbel,并在mouseEnter事件中显示弹出窗口。
如何实现我想要的结果?无法想出实现这一目标的方法。
2)是否可以隐藏JColorChooser的btns并获得我期待的结果!!
请指导我并帮助我。
答案 0 :(得分:1)
你不能在这里使用combobox。 Combobox被设计为在每个弹出行中有1个元素。
您应该为所选行创建一个带有4个按钮的面板,并使用另外一个按钮打开带有另外12个按钮的弹出窗口。要创建弹出窗口,请参阅课程javax.swing.Popup
。
以下是分步指南: