0

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

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

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

  1. 创建一个面板“ColorRowPanel”并在其中添加四个 ColorLabel。创建四个 ColorRowPanel 对象并将其设置为组合框的模型。
  2. 创建一个JTable4x4 并在每个单元格中添加 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 并获得我期望的结果!

请指导我并帮助我。

4

1 回答 1

1

您不能在此处使用组合框。组合框设计为在每个弹出行中有 1 个元素。

您应该为所选行创建一个带有 4 个按钮的面板,并创建一个附加按钮来打开带有 12 个其他按钮的弹出窗口。要创建弹出窗口,请参见类javax.swing.Popup

以下是分步指南:

  1. 使用 4 个颜色切换按钮和打开弹出窗口的按钮创建面板。
  2. 创建具有 12 个另一种颜色按钮的面板。
  3. 将所有颜色按钮添加到 ButtonGroup
  4. 触发打开/关闭弹出窗口并将其添加到按钮以打开弹出窗口
  5. 如果其中一个颜色按钮被切换,则触发关闭弹出窗口并将其添加到所有颜色按钮。
于 2013-10-28T13:23:05.377 回答