为什么我的textarea不可见?

问题描述 投票:0回答:3
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。

java swing jframe textarea
3个回答
2
投票

您应该首先将所有组件添加到框架中,然后使其可见。否则,在帧可见后动态添加组件需要重新验证和重新绘制。 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);
        }
    });
  }
}

0
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.