Java - 使用JScrollPane

use*_*941 4 java swing jframe jscrollpane jtextarea

我第一次尝试将JScrollPane与JTextArea一起使用是不会计划的 -

JFrame window = new JFrame("Scroll test");       
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setLayout(null);
window.setVisible(true);
window.setBounds(500, 200, 700, 700);

JTextArea textArea = new JTextArea(5,30);
textArea.setBounds(18, 0, 682, 500);
textArea.setEditable(false);

JScrollPane textScroll = new JScrollPane(textArea,    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

textScroll.setBounds(0, 0, 18, 500);
window.add(textScroll);
Run Code Online (Sandbox Code Playgroud)

基本上就是这样,我在左手边看到一个滚动窗格,但它是空的,你可以拖动其中一个块的东西,即使我用垃圾填充文本区域,所以它扩展超出界限....谢谢

Hov*_*els 6

建议:

  • 不要设置JTextArea的bounds或preferredSize,否则会限制它的增长,防止出现功能滚动条.
  • 更好的方法是给JTextArea一个有意义的列数和行数.
  • 不要使用空布局或绝对定位.使用嵌套容器要好得多,每个容器都使用合理且易于使用的布局管理器.
  • 不要像其他人建议的那样设置JScrollPane的preferredSize.同样,所需要的只是为JTextArea的列和行属性使用合理的数字.
  • 相反,让组件自己的首选大小和布局管理器为您做繁重的工作.

编辑:你说,

我需要使用绝对,因为我最终会在我的JFrame中有更多,布局管理器不给我自由我需要将一切正确

我的回答:你只是说,因为你不熟悉布局管理器的全部用途和强大功能,以及它们如何使创建复杂的GUI比绝对定位简单得多.相信我作为一个Swing用户从回来开始,你就像错误一样错误.问任何Swing专家,他们会告诉你相同的.例如,想象一下创建一个具有绝对定位的复杂布局,然后意识到你必须再添加一个JRadioButton到一个集合.如果您正在进行绝对定位,则必须调整GUI的大小,重置位置将受添加影响的所有组件的位置.使用布局管理器,特别是嵌套布局及其容器内部,您可能需要做的就是更改代码的一行.另一种情况:如果程序在不同的平台上运行,那么绝对定位就会冒着极其丑陋的GUI的风险,布局管理人员将为您解决所有问题.

  • @ user1714941我的第二个HFOE建议.LayoutManagers比绝对定位更强大.LayoutManager几乎没有任务无法完成. (2认同)
  • @ user1714941如果您遇到LayoutManager问题,请不要犹豫,再问一个问题.这里有很多Swing专家可以在几乎任何情况下帮助你.HFOE,如果可以的话,我会为你的编辑+1. (2认同)