我有一个jFrame,它有一个jTextbox和一个按钮。另一个jFrame有一个jLabel。我想在按下按钮时将写在第一帧的文本框中的文本带到第二帧的jLabel中。当我搜索此内容时,我得到了一些不可靠的答案。但是据我所知,可以通过创建另一个静态类或调用此引用来完成。
您要实现的“什么”问题将推动“如何”发展。
例如…
您可以在第一帧中保持对第二帧的引用,并在单击按钮时告诉第二帧发生了更改。
public class FirstFrame extends JFrame {
// Reference to the second frame...
// You will need to ensure that this is assigned correctly...
private SecondFrame secondFrame;
// The text field...
private JTextField textField;
/*...*/
// The action handler for the button...
public class ButtonActionHandler implements ActionListener {
public void actionPerformed(ActionEvent evt) {
secondFrame.setLabelText(textField.getText());
}
}
}
问题是它暴露了SecondFrame
第一个,使它可以对它做一些讨厌的事情,例如删除所有组件。
更好的解决方案是提供一系列接口,使两个类可以相互交谈…
public interface TextWrangler {
public void addActionListener(ActionListener listener);
public void removeActionListener(ActionListener listener);
public String getText();
}
public class FirstFrame extends JFrame implements TextWrangler {
private JButton textButton;
private JTextField textField;
/*...*/
public void addActionListener(ActionListener listener) {
textButton.addActionListener(listener);
}
public void removeActionListener(ActionListener listener) {
textButton.removeActionListener(listener);
}
public String getText() {
return textField.getText();
}
}
public class SecondFrame extends JFrame {
private JLabel textLabel;
private JTextField textField;
private TextWrangler textWrangler;
public SecondFrame(TextWrangler wrangler) {
textWrangler = wrangler;
wrangler.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
textLabel.setText(textWrangler.getText());
}
});
/*...*/
}
}
这基本上限制了SecondFrame
实际可以访问的内容。尽管可以争论的是ActionListener
,该组织SecondFrame
可以使用ActionEvent
源来查找更多信息,但从本质上讲,这是一种不可靠的机制,因为interface
没有提及应如何实施…
这是观察者模式的基本示例
问题内容: 嗨,我试图将一些文本附加到同一包中另一个类的一个小问题。以下是与JFrame有关的主要类: 我包括测试变量只是为了轻松地重新创建问题,但是无论何时运行append函数,jFrame的文本区域中都不会出现任何内容。在我的方案中,我让客户端从服务器接收文本,然后将其附加到文本框中。 顺便说一句,我正在为JFrame使用IntelliJ GUI设计器。我只包含了重新创建问题所需的代码。我仍在
我有一个组件A,它触发一个对话框 此组件触发PicuploadComponent,我在此上传图像并接收带有一些数据响应
问题内容: 我有两个 newAccessLevels.java ,它有两个按钮“ Level 1”,“ Level 2”和 newAccessPanel.java。 我需要获取用户选择“ 1或2”的级别,以便可以在标题中显示它。 accessPanel.java, 例如访问级别1,访问级别2。如何完成此操作。下面是示例代码,因此,如果单击级别1,则将打开标题为* ACCESS LEVEL 1 的n
问题是: 在本例中,我通过用芒果扩展MainClass得到了结果:mango two。但是在我的项目中,MainClass已经扩展到了另一个类。这就是为什么我要使用一个接口,我将用MainClass实现Mango类的重写方法 好像我可以从芒果类接收数据
问题内容: 将尽可能多的字节从ByteBuffer 放入另一个ByteBuffer 的最有效方法是什么(以及知道传输了多少字节)?我正在尝试,但似乎要抛出BufferOverflowException,当我需要它们时,我现在无法从Sun获取Javadocs(网络问题)。> :( argh。 编辑:darnit,如果bbuf_src是ReadOnly缓冲区,则@Richard 的方法(使用来自bac
问题内容: 我需要将数据从一个表复制到另一个表。这两个表几乎具有相同的结构,但是位于不同的数据库中。 我试过了 我尝试此操作,但跨数据库出现错误…未实现 问题答案: 这是一个非常简单的任务。只需为此目的使用dblink: 如果您需要定期从外部数据库中获取数据,明智的做法是定义服务器和用户映射。然后,您可以使用较短的语句: