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

Java 带有4列和4行数据[]表单的JComboBox,java,swing,jpanel,render,jcombobox,Java,Swing,Jpanel,Render,Jcombobox,在我的JavaSwing应用程序中,我需要一个包含四列四行的JComboBox。基本上,它是一个选择颜色的组合框。当组合框收拢时,用户可以看到第一行的四列,当它展开时,用户可以看到十六种颜色的4x4格式 我不知道如何设计这样的组合框布局。我可以使用渲染器,但我不确定如何实现它。我只能看到两种可能性: 创建一个名为“ColorLabel”的JLabel,用于绘制一个圆并按照其构造函数中的指定填充圆的颜色 创建一个面板“ColorRowPanel”,并在其中添加四个颜色标签。创建ColorRowPa

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

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

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

  • 创建一个面板“ColorRowPanel”,并在其中添加四个颜色标签。创建ColorRowPanel的四个对象,并将其设置为组合框的模型
  • 创建一个4x4的
    JTable
    ,并在每个单元格中添加ColorLabel。将
    JTable
    设置为
    JComboBox
    的模型
  • 这有可能吗?如果是,我应该在哪个对象中添加我的ColorRowPanels/JTable以设置为模型?当选择颜色时,我应该能够知道选择了哪个colorLabel或哪个行col来获得用户选择的颜色

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

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

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

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

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

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

    第一部分在下拉列表折叠时显示,第二部分在显示时显示。您可以看到,无论是否显示或折叠下拉列表,第一个面板仍然可见

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

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

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


    请引导我并帮助我。

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

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

    以下是分步指南:

  • 创建带有4个颜色切换按钮和打开面板的按钮的面板 弹出窗口
  • 创建带有12个其他颜色按钮的面板
  • 将所有颜色按钮添加到按钮组
  • 触发打开/关闭弹出窗口,并将其添加到要打开的按钮 弹出窗口
  • 如果其中一个颜色按钮不可用,则触发关闭弹出窗口 切换并将其添加到所有颜色按钮

  • 考虑一下。然后别忘了在BasicComboBoxPopup中添加JistTeListEnter到JTALE,否则你会(从根本上)从选择的TasHuod中丢失事件,请检查Sergiy的回答。TrasHood,你创建一个自定义选择器面板,并使用@ Sergiy的弹出窗口让我启动我的想法。如果我在CustomChooser中使用custom JToggleButton,那么我想我应该在CustomChooser面板本身中添加16个切换BTN。Sergiy,如果我在每个面板中添加4个面板和4个BTN,那么我将如何才能在4个面板中设置仅选择1个切换。使用
    javax.swingButtonGroup
    class。只需将所有按钮添加到组中,如果其中一个按钮被选中,所有其他按钮将被取消选择。请查看问题的更新部分。谢谢我的回答现在是最新的哦,谢谢亲爱的。效果很好。只有一件事我无法设置-在btn的鼠标上,我显示弹出窗口。如果鼠标超出ColorContainer、btn和/或btnsPanel,我想隐藏它。因此,如果鼠标不在这3个组件中,则将其隐藏。休息在btn选择,它得到完美的隐藏。如何为这3个组件的鼠标退出/退出事件编写if子句??