Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA Swing:Can';t将文本区域添加到边框布局_Java_Swing - Fatal编程技术网

JAVA Swing:Can';t将文本区域添加到边框布局

JAVA Swing:Can';t将文本区域添加到边框布局,java,swing,Java,Swing,MainFrame.java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextArea; public class MainFrame extends JFrame{ p

MainFrame.java

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

    private JTextArea textArea;
    private JButton btn;
    private TextPanel textPanel;

    public MainFrame() {

        super("My First JAVA Swing Window");
        setLayout(new BorderLayout());

        textArea = new JTextArea();
        btn = new JButton("Click Me");
        textPanel = new TextPanel();


        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textArea.append("Button has been clicked!\n");
                //textPanel.appendText("Button has been clicked!\n");
            }
        });

        add(textArea, BorderLayout.CENTER);
        add(btn, BorderLayout.SOUTH);

        setSize(600,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

}

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

    //private JTextArea textArea;
    private JButton btn;
    private TextPanel textPanel;

    public MainFrame() {

        super("My First JAVA Swing Window");
        setLayout(new BorderLayout());

        //textArea = new JTextArea();
        btn = new JButton("Click Me");
        textPanel = new TextPanel();


        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                //textArea.append("Button has been clicked!\n");
                textPanel.appendText("Button has been clicked!\n");
            }
        });

        //add(textArea, BorderLayout.CENTER);
        add(btn, BorderLayout.SOUTH);

        setSize(600,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

}

我的目标是,如果我单击按钮,则向文本区域添加文本(按钮已被单击!)。我设法做到了,但我试图在另一个类中分离文本区域,如果我将其分离,它将不再起作用。。我看到的是,它甚至不添加文本区域的边界布局。。。这就是我试图分离的方式,这是不起作用的部分: MainFrame.java

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

    private JTextArea textArea;
    private JButton btn;
    private TextPanel textPanel;

    public MainFrame() {

        super("My First JAVA Swing Window");
        setLayout(new BorderLayout());

        textArea = new JTextArea();
        btn = new JButton("Click Me");
        textPanel = new TextPanel();


        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                textArea.append("Button has been clicked!\n");
                //textPanel.appendText("Button has been clicked!\n");
            }
        });

        add(textArea, BorderLayout.CENTER);
        add(btn, BorderLayout.SOUTH);

        setSize(600,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

}

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

    //private JTextArea textArea;
    private JButton btn;
    private TextPanel textPanel;

    public MainFrame() {

        super("My First JAVA Swing Window");
        setLayout(new BorderLayout());

        //textArea = new JTextArea();
        btn = new JButton("Click Me");
        textPanel = new TextPanel();


        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                //textArea.append("Button has been clicked!\n");
                textPanel.appendText("Button has been clicked!\n");
            }
        });

        //add(textArea, BorderLayout.CENTER);
        add(btn, BorderLayout.SOUTH);

        setSize(600,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

}

TextPanel.java

import java.awt.BorderLayout;

import javax.swing.JPanel;
import javax.swing.JTextArea;

public class TextPanel extends JPanel{

    private JTextArea textArea;

    public TextPanel() {

        textArea = new JTextArea();
        setLayout(new BorderLayout());
        add(textArea, BorderLayout.CENTER);
    }

    public void appendText(String text) {
        textArea.append(text);
    }
}


当然还有一个运行大型机的主类…

问题是您调用了
add(textArea,BorderLayout.CENTER)MainFrame.java
中。 那里的
add
方法将
textArea
添加到
JFrame
的布局中

但之后,您不会将
TextPanel
添加到
JFrame
,而只将其添加到
JPanel
的本地
BorderLayout
。没有在任何地方添加
BorderLayout


如果您仍然调用
add(textPanel,BorderLayout.CENTER)
,它应该可以工作

是的,我没有把文本面板添加到主机的边框布局中。。。非常感谢你!