Java在选项卡之间共享JTextField值
我正在尝试跨选项卡共享Java在选项卡之间共享JTextField值,java,swing,Java,Swing,我正在尝试跨选项卡共享JTextField值 我在选项卡式窗格中添加了3个面板。当我在选项卡1的文本字段中输入一些值并单击选项卡3时,我应该能够将该文本字段传递给选项卡3 源代码文件的详细信息如下所示 public class TTM extends JPanel { private void createBen() { panel3 = new JPanel(); panel3.setOpaque(true); panel3.setBo
JTextField
值
我在选项卡式窗格中添加了3个面板。当我在选项卡1的文本字段中输入一些值并单击选项卡3时,我应该能够将该文本字段传递给选项卡3
源代码文件的详细信息如下所示
public class TTM extends JPanel {
private void createBen() {
panel3 = new JPanel();
panel3.setOpaque(true);
panel3.setBorder(BorderFactory.createLineBorder(new Color(240, 255, 240)));
panel3.add(new SBenComponent());
}
}
在文件TTM.java中
public class TTM extends JPanel {
private void createBBT() {
createDisplayD();
pane.setBorder(null);
pane.addTab("DisPlay", panel1);
pane.addTab("Recall", panel2);
createBen();
pane.addTab("Ben", panel3);
}
public void createDisplayD() {
panel1 = new JPanel();
panel1.setOpaque(true);
panel1.setBorder(BorderFactory.createLineBorder(new Color(240, 255, 240)));
panel1.add(new SComponent(user, region));
}
}
在上面代码块的最后一行调用的SComponent.java中的代码如下
public class SComponent extends JPanel implements PropertyChangeListener {
public SComponent(String user, String region) {
br = addTextField("br", 2, gridbag, v2,
...);
cu = addTextField("cu", 10, gridbag, v2,
...);
search = new JButton("Search");
search.setMnemonic('L');
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pmSearch();
}
});
private void pmSearch() {
sParams.put(Cu_Key, cu.getText());
sParams.put(Br_Key, br.getText());
}
}
在上面的代码中,我们可以看到Cu和br值被添加到一个映射中,然后用于从db中获取数据
但是在Tab3中,我应该得到这些值,详细信息如下
public class TTM extends JPanel {
private void createBen() {
panel3 = new JPanel();
panel3.setOpaque(true);
panel3.setBorder(BorderFactory.createLineBorder(new Color(240, 255, 240)));
panel3.add(new SBenComponent());
}
}
因此,在上面的上下文中,如何将SComponent.java中的cu和br的值获取到TTM.java文件或上述代码最后一行中的SBenComponent()(SBenComponent.java)
提前感谢,如果我没有明确说明问题或问题无效,请道歉。您需要查看中介模式。它是一个单例类型的对象,您可以通过对根组件的引用加载它。mediadator然后调解对其他远程GUI组件的调用
您还可以通过所有面板的构造函数传递最高的组件(即框架)。然后,当您有一个对框架的引用时,您可以构建访问其他面板和组件的方法。如果我理解正确,请执行类似操作
JTextField br, cu; //top of class
//inside method
br = addTextField("br", 2, gridbag, v2, ...);
cu = addTextField("cu", 10, gridbag, v2,...);
然后使用class.br引用;或class.cu
当我在Tab1的文本feld中输入一些值并单击Tab3时,我应该能够将该文本feld传递给Tab3
无法传递组件,因为组件只能属于单个容器。但是,您可以共享模型:
JTextField tab1TextField = new JTextField(...);
JTextField tab2TextField = new JTextField(...);
tab2TextField.setDocume( tab1TextField.getDocument() );
现在,当您在任一文本字段中输入文本时,另一个文本字段将自动更新,因为它们共享同一文档