2012-11-15 37 views
0

我有一个JTextArea包装在JScrollPane中,我用它来记录我的应用程序的输出。我为文本区域使用了默认的大小为9的普通字体,滚动窗格的高度为48像素。这导致均匀分布在滚动窗格视图线,但有一个问题:如果你滚动一路向上或向下一路,出现这种情况:限制JScrollPane的滚动范围

enter image description here

正如你所看到的,顶线被切断,这就是为什么我想知道是否有办法限制滚动窗格的滚动范围,例如,它不能达到顶部或底部的6像素。替代解决方案也受到欢迎。

+0

怀疑你的布局有问题(从来没有,甚至_think_“px”) – kleopatra

+0

@kleopatra为什么这么说?我的应用程序不能调整大小,因此使用硬编码值而不是从JFrame大小算术运算出来要容易得多。 – Konstantin

+0

,因为如果你使用了合适的LayoutManager而不是硬编码,你(很可能仅仅是猜测而没有看到任何代码)就不会有问题:-)另外,它会打破小的变化(fi字体,LAF,屏幕分辨率...) – kleopatra

回答

2

您可以通过使用从JComponent继承的方法setBorder设置自定义边框来更改JTextArea的边距(顶部/底部)。该documentation for JComponent提出以下建议:

虽然技术上可以设定边界的任何对象自JComponent,外观继承 和感觉实现许多 标准Swing组件不符合用户设置的边框以及努力。通常,在 中,当您想要在标准Swing组件 (JPanel或JLabel以外)上设置边框时,我们建议您将组件 置于JPanel中,并在JPanel上设置边框。

为限制滚动范围,而被更直截了当这将产生相同的结果。

编辑:

OP报道,以下解决方案为他工作:与空边界,其中顶部和底部的插图是6个像素的JPanel

textAreaLog.setBorder(BorderFactory.createEmptyBorder(0, 6, 0, 6)); 
+0

+1你的速度更快:-) – StanislavL

+0

@StanislavL给我打电话Lucky Luke * pewpew *;) –

+0

这样做 - 把textAreaLog.setBorder(BorderFactory.createEmptyBorder(0,6,0) ,6));'像魅力一样工作。谢谢你们,你们俩! – Konstantin