Java JTextArea不会出现在布局为空的JPanel上

Java JTextArea不会出现在布局为空的JPanel上,java,swing,file,jtextarea,Java,Swing,File,Jtextarea,我怎样才能让我的JTextArea显示出来?当从另一个类调用该类时,该类的所有功能都会起作用,该类的构造函数接受一个文件,在将该类的文本设置为该文件的文本后,我可以使用getText()从JTextArea完美地获取文本,但是,JTextArea根本不会显示在面板上,即使我正在添加它并设置大小和位置 我知道问题出在文本区域本身,而不是文件,所以我试着改变布局,这是我在一个类似的问题上读到的,但是,它不起作用 import javax.swing.*; import java.awt.*; imp

我怎样才能让我的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);
}
}
默认情况下,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.
上述逻辑将:

  • 指定文本区域的默认行/列
  • 如果文本文件包含超过5行的数据,请将文本区域添加到滚动窗格中,以便您可以在文本区域中滚动文本
  • 此外,当您将文件读入文本区域时,您应该只使用文本区域的
    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.
    
    上述逻辑将:

  • 指定文本区域的默认行/列
  • 如果文本文件包含超过5行的数据,请将文本区域添加到滚动窗格中,以便您可以在文本区域中滚动文本
  • 此外,当您将文件读入文本区域时,您应该只使用文本区域的
    read(..)
    方法来读取文件。不要重新发明轮子


    请参阅:一个包含上述所有建议的简单示例。

    @carnickr我修改了我的类以适应您的代码,但文本仍然没有显示。@我不可能知道您正在做什么或更改了什么。基本上,你发布的整个代码都是错误的,所以你需要重新开始。我为您提供了一个完整的工作示例。你测试过代码了吗?使用该代码作为起点,并根据您的特定需求对其进行自定义。抱歉,不够清晰。我编辑了我在原始问题上发布的代码,以便它与您的代码匹配,并将其放在JFrame中,以查看它是否会显示。背景确实出现了,但文本区域不是我的意思。新代码是我测试的类的全部,我能够重做它并找出它。谢谢您的帮助。@carnickr我修改了我的类以适应您的代码,但文本仍然没有显示。@我不知道您在做什么或更改了什么。基本上,你发布的整个代码都是错误的,所以你需要重新开始。我为您提供了一个完整的工作示例。你测试过代码了吗?使用该代码作为起点,并根据您的特定需求对其进行自定义。抱歉,不够清晰。我编辑了我在原始问题上发布的代码,以便它与您的代码匹配,并将其放在JFrame中,以查看它是否会显示。背景确实出现了,但文本区域不是我的意思。新代码是我测试的类的全部,我能够重做它并找出它。谢谢你的帮助。