为什么我的textarea不可见?

时间:2017-12-19 21:31:50

标签: java swing jframe textarea

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。

3 个答案:

答案 0 :(得分: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);
        }
    });
  }
}

答案 1 :(得分:0)

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

答案 2 :(得分: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