我需要在两个(或更多个)组合框之间共享数据,但是我想独立选择元素。例如,如果我在第一个comboBox中选择Object1,则我的第二个ComboBox也选择Object1,因为它们具有相同的模型(DefaultComboBoxModel,并且此模型还管理所选的对象)。但是我不想要这种行为。我想在我的comboBoxes中独立选择对象。当我在第一个comboBox中选择对象时,我的第二个comboBox不应更改。
目前,我正在考虑两个模型的超级模型。超模型会将事件发送到子模型,它们将更新组合框数据,但不会更新状态。但是我认为这不是最好的方法。
还有更多有趣且简单的方法吗?
这是理解我的意思的简短代码:
package hello;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
public class Comboboxes extends JFrame
{
private JPanel contentPane;
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
Comboboxes frame = new Comboboxes();
frame.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
public Comboboxes()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JComboBox one = new JComboBox();
one.setBounds(10, 11, 414, 26);
contentPane.add(one);
JComboBox two = new JComboBox();
two.setBounds(10, 52, 414, 26);
contentPane.add(two);
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
model.addElement("Item 1");
model.addElement("Item 2");
model.addElement("Item 3");
one.setModel(model);
two.setModel(model);
}
}
为您的装饰器ComboBoxModel。装饰者应该管理selectedItem属性,而其他所有事情都由委托管理。
这样,您将拥有1个原始模型,并在组合框上放置不同的装饰器:
DefaultComboBoxModel original = ...;
DecoratedModel firstModel = new DecoratedModel( original );
JComboBox firstCombo = new JComboBox( firstModel );
DecoratedModel secondModel = new DecoratedModel( original );
JComboBox secondCombo = new JComboBox( secondModel );
然后可以在original模型上执行对数据的更改,这将同时调整所有组合框中的数据
注意:确保连接到装饰器的侦听器以装饰的模型作为源而不是委托模型接收事件。这是编写装饰器时的常见错误
编辑
一种替代方法是拥有不是的基本数据结构,ComboBoxModel并ComboBoxModel使用该数据结构创建其实现。然后,您可以创建所有共享相同数据结构的不同组合框模型实例。
问题内容: 我的GUI中有多个组合框,所有组合框都需要数据。此数据将随机更改,因此需要一种快速的方法来保持所有值同步。我遇到了DefaultComboBoxModel,它实际上非常合适。唯一的事情是,我需要组合框彼此独立- 意思是:如果我在一个上选择一个值,则所有其他框都不应更改。我做了一些研究,并阅读了标准的Java教程,但没有一个告诉我如何使用DefaultComboBoxModel来实现这一
在Java中,对于两个JVM(运行在同一台物理机器上),是否有办法使用/共享相同的内存地址空间?假设JVM-1中的生产者将消息放在特定的预定义内存位置,如果JVM-2上的消费者知道要查看哪个内存位置,那么它是否可以检索消息?
我有两个war文件,比如war1和war2 如果am登录应用程序,会话将在war1中创建,如果am导航到war2,我需要相同的会话数据。 我在服务器的context.xml尝试了Cross Context=true,我可以通过将数据存储在servletContext中来访问数据。但问题是一旦我在chrome中登录屏幕,会话数据将存储在servletContext中,数据将保持到应用程序运行。 如果
问题内容: 我正在将AngularJS与c#mvc一起使用。我有一个主页,用户可以在其中输入一些数据,并将其传递给第二个模块,在该模块中,我将使用这些数据进行处理和决策。我必须使用第二个模块中第一个模块中输入或更新的数据。有人可以帮我实现这个目标吗? 问题答案: 希望以下实现可以帮助您有所了解。
问题内容: 我正在开发使用Meteor和React作为视图引擎的应用程序 考虑下图: 从另一个示例反应隐藏组件 当触发C4按钮单击事件时,我需要更改C2组件状态。由于他们没有直接关系,因此我无法直接从C4进入C2状态。 另一个示例是从Component提交表单并获取在另一个Component中声明的数据(输入字段的值)。 我知道可以通过一些技巧来解决此问题(例如,流星会话,通过每个组件传递数据,基
我正在试图弄清楚如何在Helm中的两个图表之间共享数据。 在两个图表之间共享configmap的最佳实践是什么?