gpt4 book ai didi

java - 从java中的另一个窗口获取值

转载 作者:行者123 更新时间:2023-12-02 06:48:38 25 4
gpt4 key购买 nike

我的问题与java swing框架有关。我有两个 jframe。 jframe1 和 jframe2。 jframe1中有一个jbutton,当用户单击jbutton时,我想显示jframe 2。jframe2有一个文本框,jbutton用户可以在文本框中输入值,当用户单击jbutton时,我想将焦点设置到第一个jframe并通过用户在 jrame1 中向 jlable 输入值。请帮我做到这一点。

最佳答案

在我看来,第二帧更像是一个对话框,用于输入一个值,然后该值将返回给调用者(第一帧)。

为了实现这一点,您创建一个模态 JDialog,在其中添加控件(文本字段,好的,也许还有取消按钮),并添加一个打开对话框(阻止调用者)并返回的方法输入的文本除非被取消。这样,您可以直接传递输入的文本,而不必将其临时存储到变量中(这通常是不好的做法)。

这是此类对话框的简单实现:

public class SwingTestDialog extends JDialog {

private JTextField text;
private boolean cancelled = true;

public static void main (String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override
public void run () {
SwingTestDialog dialog = new SwingTestDialog();
String text = dialog.selectValue();
System.out.println("Selected: " + text);
}
});
}

public SwingTestDialog () {
setModal(true);
setTitle("Please enter something");
JPanel content = new JPanel();
content.setLayout(new BorderLayout(10, 10));
getContentPane().add(content);

text = new JTextField();
JButton ok = new JButton("Accept");
JButton cancel = new JButton("Cancel");
JPanel buttons = new JPanel();
buttons.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
buttons.add(ok);
buttons.add(cancel);

content.add(text, BorderLayout.NORTH);
content.add(buttons, BorderLayout.SOUTH);
content.setBorder(new EmptyBorder(15, 15, 15, 15));
pack();

ok.addActionListener(new ActionListener() {

public void actionPerformed (ActionEvent e) {
cancelled = false;
dispose();
}
});
cancel.addActionListener(new ActionListener() {

public void actionPerformed (ActionEvent e) {
cancelled = true;
dispose();
}
});
// default button, allows to trigger ok when pressing enter in the text field
getRootPane().setDefaultButton(ok);
}

/**
* Open the dialog (modal, blocks caller until dialog is disposed) and returns the entered value, or null if
* cancelled.
*/
public String selectValue () {
setVisible(true);
return cancelled ? null : text.getText();
}
}

关于java - 从java中的另一个窗口获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com