有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有4列和4行数据[]表单的java JComboBox

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

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

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

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

这有可能吗?如果是,我应该在哪个对象中添加我的ColorRowPanels/JTable来设置为模型?当选择颜色时,我应该能够知道选择了哪个colorLabel或哪个行col来获得用户选择的颜色

更新 谢谢按照你的指导,我启动了

1)创建了一个JToggleButton类型的类ColorButton——只是为了创建按钮的形状。没有更多的实施。代码取自here

2)创建了一个扩展AbstractColorChooserPanel的类ColorContainer。创建了一个由4个BTN组成的面板,并向类中添加了4个这样的面板。还为面板的每个按钮实现了ButtonGroup。设计如CrayonPanel所示——在buildChooser()中添加了my initComponents()。构造函数为空。其余所有的抽象方法都是空的

3)将面板添加到JCC并使用JDialog。createDialog可以显示ColorContainer。它来的很好,只是我不想确定,取消,重置基站。我在JCC类或网络上找不到隐藏JCC dlg按钮面板的选项

4)为了对面板进行同样的尝试,我让ColorContainer扩展了JPanel而不是AbsColorChooserPanel,并在弹出窗口中显示ColorContainer,它显示得非常好

有两件事我还没想好 1) MAIN-我想要这样的结果:

Results I need

第一部分显示下拉列表何时折叠&;第二,当它被显示时。无论下拉列表是否显示或折叠,第一个面板仍然可见

到目前为止,我得到的是:我添加了一个JLAbel,在mouseEnter事件中,我显示了弹出窗口

我如何实现我想要的结果想不出一种方法来实现这一点

2)是否可以隐藏JColorChooser的BTN并获得我期望的结果

请引导我,帮助我


共 (1) 个答案

  1. # 1 楼答案

    这里不能使用组合框。Combobox设计为在每个弹出行中有一个元素

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

    以下是分步指南:

    1. 创建带有4个颜色切换按钮和打开面板的按钮的面板 弹出窗口
    2. 创建带有12个其他颜色按钮的面板
    3. 将所有颜色按钮添加到按钮组
    4. 触发打开/关闭弹出窗口,并将其添加到打开按钮 弹出窗口
    5. 如果其中一个颜色按钮被激活,则触发关闭弹出窗口 切换并将其添加到所有颜色按钮