java - 如何在不创建新的 Java Swing 的情况下 setText

标签 java swing user-interface

当我创建新对象时,我可以在 ConfirmDialog 的构造函数中 setText() 标记标签。
但我想当组件是 setVisible()setText()

我的程序允许用户在 A 或 B 之间进行选择。如果他们选择 A,它会打开一个对话框并在其上设置 setText("a"),如果他们选择 B,它会打开并setText("b")
它应该只创建一次新的ConfirmDialog

我的ConfirmDialog类(class)是

public class ConfirmDialog extends javax.swing.JDialog {

    public ConfirmDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        labelTitle.setText("Some text");  //labelTitle is jLabel
    }
...
}

当它创建新实例并设置visible = true

    ConfirmDialog dialog = new ConfirmDialog(new javax.swing.JFrame(), true);
    dialog.setLocationRelativeTo(null);
    dialog.setVisible(true);

当我单击“确定”按钮并关闭对话框时

private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {                                      
    this.setVisible(false);
}   

如果我再次打开对话框并想要更改其文本,就像这样

labelTitle.setText("another text");

如果没有创建新的ConfirmDialog(new javax.swing.JFrame(), true);,我可以直接设置它吗,或者是否有一个方法允许setText() code>,在 setVisible(true) 上恢复时?

谢谢

最佳答案

你当然可以。保存对您创建的 ConfirmDialog 的引用,例如作为父窗口类中的属性。

私有(private)ConfirmDialog对话框;

然后向ConfirmDialog添加一个setter方法来设置标签的文本。

public void setLabelText(String text){
    labelTitle = text;
}

然后,您可以在显示对话框时使用该设置方法。

dialog.setLabelText("文本");

关于java - 如何在不创建新的 Java Swing 的情况下 setText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564789/

相关文章:

java - Scala:在类中找不到主要方法

java - 来自视频流的帧

java - Jersey REST Web 服务获取 Web 项目 URL

java - 如何将元素添加到由我自己的类型参数化的 JList

java - ListView 中的字符串样式,Android Dev

java - Gradle 中的并行执行

java - 单击具有内部组件的 JPanel

java - 在使用之间保存 Java GUI 布局配置(带桌面 Pane )

android - 如何将宽度设置为 "fill parent"的 android 按钮中的图标和文本居中

java - JComboBox getSelectedItem() 没有改变