java JTextArea不会出现在布局为空的JPanel上
我怎样才能让我的JTextArea出现?当从另一个类调用该类时,该类的所有功能都会起作用,该类的构造函数接受一个文件,我可以通过getText()从JTextArea中完美地获取文本,将其文本设置为文件的文本后,然而,JTextArea根本不会显示在面板上,尽管我正在添加它并设置大小和位置
我知道问题出在文本区本身,而不是文件,所以我试着改变布局,这是我在一个类似的问题上读到的,但是,它不起作用
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.text.*;
public class EditableArea extends JPanel
{
JTextArea text;
public EditableArea()
{
setBackground(Color.GREEN);
text = new JTextArea(5, 20);
text.setText("default text");
JScrollPane scrollPane = new JScrollPane(text);
add(scrollPane);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
}
}
# 1 楼答案
默认情况下,Swing组件的大小为(0,0)
该面板尚未添加到visible GUI,因此面板的大小为(0,0),文本的大小为(0,0),并且没有任何可绘制的内容
不要试图设置文本区域的大小。Swing组件应确定其自己的首选大小,并应使用布局管理器,以便以首选大小显示组件
所以基本准则应该是:
上述逻辑将:
此外,当您将文件读入文本区域时,您应该只使用文本区域的
read(..)
方法来读取文件。不要重新发明轮子请参阅:Loading a text file into a textarea以获取包含上述所有建议的简单示例