JAVA Swing:Can';t将文本区域添加到边框布局
MainFrame.javaJAVA 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
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)
,它应该可以工作 是的,我没有把文本面板添加到主机的边框布局中。。。非常感谢你!