如何从其他类访问/修改JFrame对象?

时间:2015-06-04 01:53:19

标签: java swing textbox jframe jbutton

我正在尝试创建一个代码,该代码将在JFrame对象内部创建一个文本框,然后在单击一个按钮后,该框内的文本将会更改。我仍然对如何创建文本框以及如何从其他类内部编辑它感到困惑。到目前为止,我尝试的所有内容都因为无法从单独的类访问JFrame而无法工作。这是我到目前为止所做的。

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import java.awt.*;
import java.awt.event.*;

public class BlackjackGUI{
public static void main(String[] args){

JFrame frame= new JFrame("Blackjack");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
JPanel panel=new JPanel();
frame.add(panel);
JButton hit=new JButton("Hit");
panel.add(hit);
hit.addActionListener(new Action());
//make text box
}

static class Action extends BlackjackGUI implements ActionListener{

public void actionPerformed (ActionEvent e){

    //code to edit text in text box




    }
 }
}  

1 个答案:

答案 0 :(得分:1)

  • 首先:从静态main方法中获取大多数的代码。您的JFrame在主方法中埋藏,使其及其子组件无法访问。您的目标是让两个对象进行交互,这将要求您创建表现良好的符合OOP的类。这样做 - 使用字段创建类,如果需要,可以使用公共访问器和mutator方法,使用构造函数创建JTextArea字段。
  • 是的,你需要一个main方法,但它的目的应该是创建主要的actor,允许它们以某种方式连接(比如将一个作为参数传递给另一个),然后设置程序运动。它应该做的很少。
  • 接下来也非常重要:不要为此继承使用继承,因为继承不用于允许一个类与另一个类通信(至少不是在你使用它时)。例如,让你的第二类继承自BlackjackGUI将没有用处。
  • 相反,构图是关键。让一个类保持另一个类型的字段并为其分配正确的可行参考,并且瞧,你已经完成了。