JTextArea 不会出现在具有空布局的 JPanel 上
JTextArea does not appear on JPanel with null layout
如何显示我的 JTextArea? class 的所有功能都在从另一个 class 调用时工作,该构造函数使用一个文件,我可以在设置文本后使用 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);
}
}
text.setSize(this.getWidth(), this.getHeight());
默认情况下,Swing 组件的大小为 (0, 0)。
面板尚未添加到可见 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.
以上逻辑将:
- 指定文本区域的默认值row/columns。
- 如果文本文件包含超过 5 行数据,则将文本区域添加到滚动窗格,以便您可以滚动文本区域中的文本。
另外,当你将文件读入文本区时,你应该只使用文本区的read(..)
方法来读取文件。不要重新发明轮子。
请参阅:Loading a text file into a textarea 了解包含上述所有建议的简单示例。
如何显示我的 JTextArea? class 的所有功能都在从另一个 class 调用时工作,该构造函数使用一个文件,我可以在设置文本后使用 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);
}
}
text.setSize(this.getWidth(), this.getHeight());
默认情况下,Swing 组件的大小为 (0, 0)。
面板尚未添加到可见 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.
以上逻辑将:
- 指定文本区域的默认值row/columns。
- 如果文本文件包含超过 5 行数据,则将文本区域添加到滚动窗格,以便您可以滚动文本区域中的文本。
另外,当你将文件读入文本区时,你应该只使用文本区的read(..)
方法来读取文件。不要重新发明轮子。
请参阅:Loading a text file into a textarea 了解包含上述所有建议的简单示例。