我有一个MainWindow类,它有main方法,它的构造函数和initialize()方法。initialize() 方法有 frame、Jbutton 和最后一个 Jtextarea。actionPerformed() 位于处理 ActionListener 的另一个类 Data 中。我想在 Jtextfield 中按下按钮后显示一些文本,该字段仅在 MainWindow 类的私有变量框架内。我没有提到应用程序逻辑,请帮助我与它和 GUI 交互。谢谢!!!!!
类:
public class MainWindow {
private JFrame frame;
public Data data;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MainWindow() {
this.data = new Data();
initialize();
}
private void initialize(){
frame = new JFrame();
frame.setBounds(100, 100, 396, 469);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
final JTextArea textarea = new JTextArea();
textarea.setFont(new Font("Dialog", Font.PLAIN, 75));
textarea.setTabSize(15);
textarea.setBounds(12, 28, 370, 85);
frame.getContentPane().add(textarea);
JButton button7 = new JButton("7");
button7.addActionListener(this.data); // Data data class has the actionperformed() method
button7.setActionCommand("7");
button7.setBounds(12, 125, 65, 73);
frame.getContentPane().add(button7);
}
}
那么类数据是:
public class Data implements ActionListener {
public String s;
public Data(){
//constructor
}
public void actionPerformed(ActionEvent e) {
// this will set string s with some string
// that has to be returned to be displayed
// in the Jtextarea of the frame in MainWindow
}
public string returnString(){
return s;
}
我只想在 MainWindow 类中设置框架变量的 JtextArea。请帮忙
如果我理解正确,你可以简单地通过getter或构造函数将TextArea的引用传递给你的ActionListener。在这里我只是使用了吸气剂
public class Data implements ActionListener {
public JTextArea textArea;
public Data() {
//constructor
}
// here I used setter
public void setTextArea( JTextArea textArea ) {
this.textArea = textArea;
}
public void actionPerformed(ActionEvent e) {
// this will work, if you click the button 7
textArea.setText("Any modification you want");
}
}
并在文本区域初始化后将此代码添加到您的 initialize() 方法中
this.data.setTextArea(textarea);
希望对您有所帮助。
更新
public class MainWindow {
private JFrame frame;
public Data data;
final JTextArea textarea;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public class Data implements ActionListener {
public String s;
public MainWindow mainWindow;
public Data( MainWindow mainWindow ) {
this.mainWindow = mainWindow;
//constructor
}
public void actionPerformed(ActionEvent e) {
s = "test";
// this will set string s with some string
// that has to be returned to be displayed
// in the Jtextarea of the frame in MainWindow
mainWindow.updateTextArea(s);
}
public String returnString() {
return s;
}
}
这只是一个简单的实现。