添加 JScrollPane 时 JTextArea 消失
JTextArea disappears when add JScrollPane
我是 Java Swing 的业余爱好者,无法解决以下问题。
一旦我将 JScrollPane
添加到 JTextArea
,这两个组件在 GUI 中都不可见。
我知道在添加滚动条时不应该添加文本区域(我注释掉了那一行),但这没有帮助。
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JTextArea textArea = new JTextArea();
textArea.setBounds(213, 11, 186, 240);
// NOT CALLING frame.getContentPane().add(textArea);
scroll = new JScrollPane(textArea);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scroll);
它只在我使用 BorderLayout
时对我有用,但这不是我想使用的布局。
我的目标是在框架中放置几个文本区域。
我该怎么做才能让文本区域滚动显示,比如 AbsoluteLayout
(null
)?
您的框架使用了空布局。
您将滚动窗格添加到框架中,但滚动窗格的大小为 (0, 0),因此没有可绘制的内容。
不要使用空布局。
而不是使用布局管理器。然后布局管理器将管理每个组件的大小和位置,因此您不必这样做。不要试图重新发明轮子,布局管理器的创建是有原因的,绝对没有理由在使用 JScrollPane/JTextArea.
时尝试使用空布局
textArea.setBounds(213, 11, 186, 240);
顺便说一句,当您将文本区域(或任何组件)添加到滚动窗格时,该代码将不执行任何操作。然后滚动窗格使用它自己的布局管理器并将覆盖这些值。
JTextArea textArea = new JTextArea();
不要使用这样的代码来创建文本区域。而是使用类似的东西:
JTextArea textArea = new JTextArea(5, 30);
现在文本区域可以确定自己的首选大小,布局管理器可以使用该信息。
我是 Java Swing 的业余爱好者,无法解决以下问题。
一旦我将 JScrollPane
添加到 JTextArea
,这两个组件在 GUI 中都不可见。
我知道在添加滚动条时不应该添加文本区域(我注释掉了那一行),但这没有帮助。
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JTextArea textArea = new JTextArea();
textArea.setBounds(213, 11, 186, 240);
// NOT CALLING frame.getContentPane().add(textArea);
scroll = new JScrollPane(textArea);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(scroll);
它只在我使用 BorderLayout
时对我有用,但这不是我想使用的布局。
我的目标是在框架中放置几个文本区域。
我该怎么做才能让文本区域滚动显示,比如 AbsoluteLayout
(null
)?
您的框架使用了空布局。
您将滚动窗格添加到框架中,但滚动窗格的大小为 (0, 0),因此没有可绘制的内容。
不要使用空布局。
而不是使用布局管理器。然后布局管理器将管理每个组件的大小和位置,因此您不必这样做。不要试图重新发明轮子,布局管理器的创建是有原因的,绝对没有理由在使用 JScrollPane/JTextArea.
时尝试使用空布局textArea.setBounds(213, 11, 186, 240);
顺便说一句,当您将文本区域(或任何组件)添加到滚动窗格时,该代码将不执行任何操作。然后滚动窗格使用它自己的布局管理器并将覆盖这些值。
JTextArea textArea = new JTextArea();
不要使用这样的代码来创建文本区域。而是使用类似的东西:
JTextArea textArea = new JTextArea(5, 30);
现在文本区域可以确定自己的首选大小,布局管理器可以使用该信息。