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

Java 如何从其他类访问/修改JFrame对象?,java,swing,textbox,jframe,jbutton,Java,Swing,Textbox,Jframe,Jbutton,我正在尝试创建一个代码,该代码将在JFrame对象内创建一个文本框,然后单击按钮后,框内的文本将发生更改。我仍然对如何创建文本框以及如何从其他类中编辑文本框感到困惑。由于缺乏从单独的类访问JFrame的能力,到目前为止我尝试的所有方法都无法工作。这就是我目前所拥有的 import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.JLabel; import

我正在尝试创建一个代码,该代码将在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




    }
 }
}  
  • 首先也是最重要的:从静态main方法中获取该代码的大部分。JFrame被隐藏在主方法中,使其及其子组件无法访问。您的目标是让两个对象交互,这将要求您创建行为良好的OOP兼容类。所以要这样做——创建带有字段的类,如JTextArea字段(如果需要),使用公共访问器和mutator方法,以及构造函数
  • 是的,您需要一个main方法,但它的目的应该是创建主要参与者,允许他们以某种方式连接(比如通过将一个作为参数传递给另一个),然后启动程序。它不应该做任何其他事情
  • 接下来也是非常重要的一点:不要将继承用于此目的,因为继承并不是用来允许一个类与另一个类通信的(至少不是在您使用它时)。例如,让您的第二个类从BlackjackGUI继承将没有任何用处
  • 相反,构图是关键。让一个类保存另一种类型的字段,并为其指定正确的可行引用,瞧,你们都准备好了