phu*_*ehe 15 java swing jscrollpane horizontal-scrolling
我有一个JScrollPane与FlowLayout我希望有一个固定的宽度.它应该只是垂直滚动,当我调整窗口大小时应该自动重新排列内容.我认为应该有一种方法,setEnableHorizontalScroll(false)但找不到它.
有没有简单的方法来做到这一点?
Mat*_*och 22
您可以使用:
import static javax.swing.ScrollPaneConstants.*;
// ...
JScrollPane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
Run Code Online (Sandbox Code Playgroud)
...但这只是阻止了水平滚动条的显示.
使内容自动重新排列将取决于内容是什么.A JTextPane或JEditorPane将自动为您执行此操作(无需上述代码).
这不是JDK中开箱即用的自定义解决方案.
您可以使用WrapLayout.
或者,您可以创建自定义面板并实现Scrollable界面.在这种情况下,关键是覆盖getScrollableTracksViewportWidth()以返回true,因此视口宽度而不是面板的宽度用于布局目的.可以在ScrollableFlowPanel中找到此方法的示例
最后我发现了如何,请看这个非常简短的例子,不需要任何高级技巧:
public class MyTest extends JFrame {
public static void main(String[] args) {
MyTest test = new MyTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setSize(300, 200);
test.setVisible(true);
}
public MyTest() {
String[] data = {
"Arlo", "Cosmo", "Elmo", "Hugo",
"Jethro", "Laszlo", "Milo", "Nemo",
"Otto", "Ringo", "Rocco", "Rollo"
};
JList list = new JList(data);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(0);
JScrollPane scroll = new JScrollPane(list);
this.add(scroll);
}
}
Run Code Online (Sandbox Code Playgroud)
改编自Sun的教程
| 归档时间: |
|
| 查看次数: |
44478 次 |
| 最近记录: |