JScrollPanel中View不断变宽的问题(如何限制View宽度)
来源:互联网 发布:网络ip电话 通话中断音 编辑:程序博客网 时间:2024/05/22 11:58
当JScrollPane中的View包含一个JLabel,如果这个JLabel很长,那么在一开始,水平滚动条是隐藏的。这时候,如果我们慢慢拖动窗口使JScrollPane变宽,那么View也变宽了(因为JLabel很长)。但是如果这时候拖动窗口使JScrollPane变窄,View的宽度没有变窄!水平滚动条出现了!
我们期望的结果是,JScrollPane变窄的时候,JLabel也变窄。
但是我们发现JTextArea在JScrollPane中的时候,JScrollPane变窄,JTextArea也会变窄。这是为啥呢?
其实是因为JTextArea实现了Scrollable接口,JScrollPane会因为View是否实现Scrollable接口而有不同的表现。
参考JTextArea中Scrollable的实现(JTextComponent的实现),相应的,我们可以让View按照如下的方法实现Scrollable。此处为MyFixedWidthPanel。
public class MyFixWidthPanel extends JPanel implements Scrollable { public MyFixWidthPanel() { super(); } public MyFixWidthPanel(LayoutManager layout) { super(layout); } @Override public Dimension getPreferredScrollableViewportSize() { return getPreferredSize(); } @Override public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { switch (orientation) { case SwingConstants.VERTICAL: return visibleRect.height / 10; case SwingConstants.HORIZONTAL: return visibleRect.width / 10; default: throw new IllegalArgumentException("Invalid orientation: " + orientation); } } @Override public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { switch (orientation) { case SwingConstants.VERTICAL: return visibleRect.height; case SwingConstants.HORIZONTAL: return visibleRect.width; default: throw new IllegalArgumentException("Invalid orientation: " + orientation); } } @Override public boolean getScrollableTracksViewportWidth() { return true; } @Override public boolean getScrollableTracksViewportHeight() { return false; }}
阅读全文
1 0
- JScrollPanel中View不断变宽的问题(如何限制View宽度)
- 自定义view的宽度问题
- 在oncreate中如何获取view的高度和宽度
- 如何在onCreate中获取View的高度和宽度
- 如何获取view的宽度和高度
- android 中 view 的宽度和高度
- View的getWidth()和getMeasuredWidth()有什么区别吗?如何在onCreate中拿到View的宽度和高度?
- (方案)正确初始化view的宽度
- Android 如何在onCreate中拿到View的宽度和高度
- android关于代码中动态设置view的高度宽度的问题
- RecyclerView子View宽度不能全屏的问题
- RecyclerView子View宽度不能全屏的问题
- Android 如何解决代码中view的setId红线问题
- 获取view的高度和宽度(在onCreate方法中)
- 自定义view中获取字符串的宽度和高度
- 在代码中获得view的宽度和高度
- Activity中获取view的高度和宽度方法
- 在onCreate()方法中获取View的宽度与高度
- ZCMU—1951
- 正则表达式验证URL
- 26-api
- mybatis传入多个参数
- codeforces 834 C The Meaningless Game
- JScrollPanel中View不断变宽的问题(如何限制View宽度)
- 3.如何安装Apache Spark
- go初学者安装echo框架
- title与h1的区别、b与strong的区别、i与em
- You must add /O=Digital Signature Trust Co./CN=DST Root CA X3 to your local trusted store Fetching:
- easyUi和ext comBoBox的模糊查询 (支持拼音和汉字)
- Spring 顾问 自动代理
- 递归的一道简单题
- object detection