Java JTextArea不会出现在布局为空的JPanel上
我怎样才能让我的JTextArea显示出来?当从另一个类调用该类时,该类的所有功能都会起作用,该类的构造函数接受一个文件,在将该类的文本设置为该文件的文本后,我可以使用getText()从JTextArea完美地获取文本,但是,JTextArea根本不会显示在面板上,即使我正在添加它并设置大小和位置 我知道问题出在文本区域本身,而不是文件,所以我试着改变布局,这是我在一个类似的问题上读到的,但是,它不起作用Java JTextArea不会出现在布局为空的JPanel上,java,swing,file,jtextarea,Java,Swing,File,Jtextarea,我怎样才能让我的JTextArea显示出来?当从另一个类调用该类时,该类的所有功能都会起作用,该类的构造函数接受一个文件,在将该类的文本设置为该文件的文本后,我可以使用getText()从JTextArea完美地获取文本,但是,JTextArea根本不会显示在面板上,即使我正在添加它并设置大小和位置 我知道问题出在文本区域本身,而不是文件,所以我试着改变布局,这是我在一个类似的问题上读到的,但是,它不起作用 import javax.swing.*; import java.awt.*; imp
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);
}
}
默认情况下,Swing组件的大小为(0,0)
该面板尚未添加到visible GUI,因此面板的大小为(0,0),因此文本的大小为(0,0),并且没有要绘制的内容
不要试图设置文本区域的大小。Swing组件应确定其自己的首选大小,并且应使用布局管理器,以便以其首选大小显示组件
因此,基本准则应该是:
//setLayout(null);
text = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(textArea);
add( scrollPane );
// add text from file to the text area.
上述逻辑将:
read(..)
方法来读取文件。不要重新发明轮子
请参阅:以获取包含上述所有建议的简单示例
默认情况下,Swing组件的大小为(0,0)
该面板尚未添加到visible GUI,因此面板的大小为(0,0),因此文本的大小为(0,0),并且没有要绘制的内容
不要试图设置文本区域的大小。Swing组件应确定其自己的首选大小,并且应使用布局管理器,以便以其首选大小显示组件
因此,基本准则应该是:
//setLayout(null);
text = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(textArea);
add( scrollPane );
// add text from file to the text area.
上述逻辑将:
read(..)
方法来读取文件。不要重新发明轮子
请参阅:一个包含上述所有建议的简单示例。@carnickr我修改了我的类以适应您的代码,但文本仍然没有显示。@我不可能知道您正在做什么或更改了什么。基本上,你发布的整个代码都是错误的,所以你需要重新开始。我为您提供了一个完整的工作示例。你测试过代码了吗?使用该代码作为起点,并根据您的特定需求对其进行自定义。抱歉,不够清晰。我编辑了我在原始问题上发布的代码,以便它与您的代码匹配,并将其放在JFrame中,以查看它是否会显示。背景确实出现了,但文本区域不是我的意思。新代码是我测试的类的全部,我能够重做它并找出它。谢谢您的帮助。@carnickr我修改了我的类以适应您的代码,但文本仍然没有显示。@我不知道您在做什么或更改了什么。基本上,你发布的整个代码都是错误的,所以你需要重新开始。我为您提供了一个完整的工作示例。你测试过代码了吗?使用该代码作为起点,并根据您的特定需求对其进行自定义。抱歉,不够清晰。我编辑了我在原始问题上发布的代码,以便它与您的代码匹配,并将其放在JFrame中,以查看它是否会显示。背景确实出现了,但文本区域不是我的意思。新代码是我测试的类的全部,我能够重做它并找出它。谢谢你的帮助。