java - 两个 GUI 组件之间有趣的绑定(bind)问题

标签 java swing binding jcombobox jcheckbox

我面临以下问题:

我有一个 JCheckbox,以及一个关联的 JComboBox。 (嗯,它唯一的关联在于它在选项卡上水平相邻,而且命名约定是它们名称的前几个字符始终相同,表明它们属于在一起)。我在这些类型的组件上有监听器,以便在它发生变化时执行一些操作。

现在,这些类型的元素可以显示在选项卡式 Pane 中(在不同的选项卡上)。 复选框可能会在没有组合框的情况下出现,但如果没有复选框关联,组合框就无法出现。

目前,我对构造一个日志字符串感兴趣,如下所示: (选项卡式面板的名称)>(JPanel 的名称)>(复选框的名称)>(组合框的名称)

--> 当然,如果组合框未更改,我会停在复选框名称处,但如果组合框更改,我想将其与其复选框关联起来。 当然,这一切都发生在两个组件的 Action 事件处理程序中...... 另外,我已经获得了选项卡式面板、jpanel 和复选框的名称。

这里的问题是以某种方式将组合框与复选框绑定(bind),以便在组合框更改时获取复选框信息。

我希望这是清楚的,请询问是否有任何需要澄清的事情

最佳答案

如评论中所述,您可以创建一个新的组合控件并使用 这而不是单个 ComboBoxCheckBox

组合控制的简单示例:

public class CheckCombo extends javax.swing.JPanel
{
   private final javax.swing.JCheckBox jCheckBox1;
   private final javax.swing.JComboBox jComboBox1;

   public CheckCombo()
   {
       jCheckBox1 = new javax.swing.JCheckBox();
       jComboBox1 = new javax.swing.JComboBox();

       this.setLayout(new java.awt.BorderLayout());

       this.add(jCheckBox1, java.awt.BorderLayout.WEST);
       this.add(jComboBox1, java.awt.BorderLayout.CENTER);
   }

   public javax.swing.JComboBox getComboBox()
   {
      return jComboBox1;
   }
   public void setCheckboxSelected(boolean b)
   {
       jCheckBox1.setSelected(b);
   }
   public void setComboBoxVisible(boolean b)
   {
       jComboBox1.setVisible(b);
   }
   public void setCheckboxText(String s)
   {
       jCheckBox1.setText(s);
   }
}

只需将常规 ComboBox 替换为我的示例中的 CheckCombo 并删除关联的Checkbox即可。
您可以使用公共(public)方法修改 CheckCombo 的状态。

干杯。

关于java - 两个 GUI 组件之间有趣的绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30622042/

相关文章:

java - GridBagLayout:仅当我横向扩展 JFrame 时 JPanel 才会出现

JavaFX Beans 绑定(bind)突然停止工作

javascript - Javascript 中的 RSA-OAEP 加密和 Java 中的解密

Java将修改后的标记添加到字符串中

java - Java azure中while循环输出不同结果的打印结果

java - 动态添加内容到java swing jpanel

java - 将绘图区域添加到空布局 GUI

java - 单击“ TableView ”行时将文本设置为“标签”

wpf - WPF 中的双向绑定(bind)不适用于静态成员

java - spring数据查询dsl如何添加order by?