JComboBox有4个cols和4行data [] []形式

时间:2013-10-28 13:12:25

标签: java swing jpanel render jcombobox

在我的Java Swing应用程序中,我需要一个包含四列和四行的JComboBox。基本上,它是一个选择颜色的组合框。折叠组合框时,用户可以看到第一行的四列,当它展开时,用户可以看到16x4x4形式的颜色。

我不知道如何设计这样的组合框布局。我可以使用渲染器,但我不确定如何实现它。我只能看到两种可能性:

创建一个名为“ColorLabel”的JLabel,它绘制一个圆并填充其构造函数中指定的圆的颜色。

  1. 创建一个“ColorRowPanel”面板,并在其中添加四个ColorLabel。创建ColorRowPanel的四个对象,并将其设置为组合框的模型。
  2. 创建一个4x4的JTable并在每个单元格中添加ColorLabel。将JTable设置为JComboBox
  3. 的模型

    这有可能吗?如果是这样,我在什么对象中添加我的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)主要 - 我想要这样的结果

    Results I need

    第一部分显示下拉列表何时崩溃&第二次显示时。无论下拉显示还是折叠,您都会看到第一个面板仍然可见。

    我到现在所做的是:我添加了一个JLAbel,并在mouseEnter事件中显示弹出窗口。

    如何实现我想要的结果?无法想出实现这一目标的方法。

    2)是否可以隐藏JColorChooser的btns并获得我期待的结果!!

    请指导我并帮助我。

1 个答案:

答案 0 :(得分:1)

你不能在这里使用combobox。 Combobox被设计为在每个弹出行中有1个元素。

您应该为所选行创建一个带有4个按钮的面板,并使用另外一个按钮打开带有另外12个按钮的弹出窗口。要创建弹出窗口,请参阅课程javax.swing.Popup

以下是分步指南:

  1. 创建具有4个颜色切换按钮的面板和用于打开的按钮 弹出。
  2. 使用另外12个颜色按钮创建面板。
  3. 将所有颜色按钮添加到ButtonGroup
  4. 触发打开/关闭弹出窗口并将其添加到按钮以打开 弹出窗口
  5. 如果其中一个颜色按钮是,则触发以关闭弹出窗口 切换并将其添加到所有颜色按钮。