我第一次尝试将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);
基本上就是这样,我在左手边看到了一个滚动窗格,但它是空的,你可以拖动其中一个块的东西,即使我用垃圾填充文本区域,所以它扩展超出界限....谢谢
答案 0 :(得分:6)
建议:
修改:您说明,
我需要使用绝对值,因为我最终会在我的JFrame中拥有更多内容,布局管理器不会给我自由放置所需的自由
我的回答:您只是这样说,因为您不熟悉布局管理器的全部使用和强大功能,以及它们如何使创建复杂的GUI比绝对定位简单得多。相信我作为一个Swing用户从回来开始,你就像错误一样错误。问任何Swing专家,他们会告诉你相同的。例如,想象一下创建一个具有绝对定位的复杂布局,然后意识到你必须再添加一个JRadioButton到一个集合。如果您正在进行绝对定位,则必须调整GUI的大小,重置位置将受添加影响的所有组件的位置。使用布局管理器,特别是嵌套布局及其容器内部,您可能需要做的就是更改代码的一行。另一种情况:如果程序在不同的平台上运行,那么绝对定位就会冒着极其丑陋的GUI的风险,布局管理人员将为您解决所有问题。
答案 1 :(得分:4)
问题是你要将滚动窗格的大小设置为宽度为18.考虑到通常的垂直滚动条大约需要20px,你看不到多少。
null
布局JFrame.setVisible(boolean)
的通话应该是最后一次通话以下是一个可以帮助您入门的示例:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class TestScrollPane {
protected void initUI() {
JFrame window = new JFrame(TestScrollPane.class.getSimpleName());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
JTextArea textArea = new JTextArea(25, 30);
JScrollPane textScroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
window.add(textScroll);
window.pack();
window.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestScrollPane().initUI();
}
});
}
}