gpt4 book ai didi

java - 将 Jframe Jtextfield 发送到另一个类

转载 作者:行者123 更新时间:2023-11-29 05:40:02 25 4
gpt4 key购买 nike

我有一个 JFrame,它有一个 textfield 和一个 button。它应该在程序开始时变得可见,当我单击按钮时,它应该变得不可见并将文本字段的文本发送到另一个类。但它什么也没发送,当我点击按钮时,IDE 进入 Debug模式。

public class JframeFoo extends JFrame {

private String username = new String();

public JframeFoo() {
// --------------------------------------------------------------
// Making Frame for login

final JTextField usernameFiled = new JTextField();
this.add(usernameFiled);

JButton signinButton = new JButton();
// ------------------------------------------------------------

signinButton.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
username = usernameFiled.getText();
setVisible(false);
Main.mainpage.setVisible(true);

}
});
// --------------------------------------------------------------------------

}

public String getuserName() {
return this.username;
}
}

我的另一个类调用 Jframe:

System.out.println(JframeFoo.getusername);

最佳答案

暂时忽略让多个 JFrames 在用户面前跳出并不是一个好的用户界面设计,一个对象要与另一个对象通信,它必须具有对另一个对象的有效引用。 (对不起,被女儿打扰了)。

因此,一个 JFrame 类要从另一个 JFrame 类获取信息,它必须具有对获取文本的第一个对象的引用,而且我没有看到您传递该引用,例如在构造函数或 setter 方法中。

例如,如果 Class1 的对象具有 Class2 的对象所需的信息,那么传递它的一种方法是为 Class2 提供对 Class1 的有效实例的引用,然后让 Class2从 Class1 实例获取信息。例如,

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;

import javax.swing.*;

public class ClassMain {

private static void createAndShowGui() {
ClassMain mainPanel = new ClassMain();

JFrame frame = new Class1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

class Class1 extends JFrame {
private JTextField textfield = new JTextField(10);

public Class1() {
JPanel contentPane = (JPanel) getContentPane();
contentPane.setLayout(new FlowLayout());
add(textfield);
add(new JButton(new AbstractAction("Open Window") {

@Override
public void actionPerformed(ActionEvent arg0) {
Class2 class2 = new Class2(Class1.this);
Class1.this.setVisible(false);
class2.pack();
class2.setVisible(true);
class2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}));
}

public String getTextfieldText() {
return textfield.getText();
}
}

class Class2 extends JFrame {
private Class1 class1;
private JLabel label = new JLabel("");

public Class2(Class1 class1) {
this.class1 = class1;
label.setText(class1.getTextfieldText());
add(label);
}


}

关于java - 将 Jframe Jtextfield 发送到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949012/

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