0

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

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

我的ConfirmDialog课程是

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);

当我单击 OK 按钮并关闭对话框时

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

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

labelTitle.setText("another text");

不创建一个new ConfirmDialog(new javax.swing.JFrame(), true);,我可以设置它,还是有一种方法可以setText()在恢复时允许setVisible(true)

谢谢

4

2 回答 2

2

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

private ConfirmDialog dialog;

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

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

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

dialog.setLabelText("text");

于 2013-03-22T07:21:24.750 回答
0

在 ConfirmDialog 中创建一个返回 JLabel“labelTitle”的方法。

private getTitleLabel() {
    return labelTitle }

使用已创建的 ConfirmDialog 实例,您可以像这样更改文本。

dialog.getTitleLabel().setText("your text"); //dialof is instance of ConfirmDialog
于 2013-03-22T07:23:16.437 回答