为啥我的文本区域不可见?

Posted

技术标签:

【中文标题】为啥我的文本区域不可见?【英文标题】:Why is my textarea not visible?为什么我的文本区域不可见? 【发布时间】:2018-06-02 09:23:27 【问题描述】:
import javax.swing.*;
public class text
  public static void main(String Args[])
    JFrame frame = new JFrame();
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setVisible(true);
    JPanel panel = new JPanel();
    JTextArea area = new JTextArea();
    panel.add(area);
    frame.add(panel);
  

当我编译并运行它时,它会显示一个 JFrame 并且上面没有 textarea。

【问题讨论】:

【参考方案1】:

您应该首先将所有组件添加到框架中,然后使其可见。否则,在框架可见后动态添加组件需要重新验证和重新绘制。 See How to Make Frames 了解更多详情。

JTextArea 有几个构造函数。默认构造函数将行数和列数设置为 0 和空文本。在这种情况下,可能不会显示文本区域。使用另一个构造函数,即:textArea = new JTextArea(5, 20); 有关更多详细信息和示例,请参阅How to Use Text Areas。

这是一个小例子:

import javax.swing.*;

public class TextAreaDemo
  public static void main(String Args[])
    SwingUtilities.invokeLater(new Runnable() 
        public void run() 
            JFrame frame = new JFrame("TextAreaDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JPanel panel = new JPanel();
            JTextArea area = new JTextArea(5, 20);
            panel.add(area);
            frame.add(panel);

            frame.pack();
            frame.setVisible(true);
        
    );
  

【讨论】:

【参考方案2】:

您尚未将面板添加到框架中。

【讨论】:

我打算在帖子中这样做。我解决了这个问题,但它仍然无法正常工作【参考方案3】:

您的代码中缺少一些小东西:

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JTextArea area = new JTextArea();
area.setVisible(true);
area.setSize(100, 100);
panel.add(area);
frame.add(panel); 
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);

您拥有的和我拥有的之间的主要区别在于设置可见区域和该区域的大小。我想这就是你所缺少的。这是一个额外帮助的链接:https://www.javatpoint.com/java-jtextarealp:

【讨论】:

以上是关于为啥我的文本区域不可见?的主要内容,如果未能解决你的问题,请参考以下文章

为啥tinymce没有出现在动态添加的文本区域

ExtJS,无法将我的文本区域滚动到底部

如何使我的物化文本区域不被切断?

为啥 IE 8 让光标跳到这个 JS 的文本区域的末尾?

如何清除焦点上的文本区域?

文本区域不起作用[重复]