- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想更改 JScrollBar 的外观。
我通过覆盖/扩展 ScrollBarUI 来做到这一点。
通过覆盖createIncreaseButton
来改变箭头按钮的外观是没有问题的。和createDecreaseButton
。我通过覆盖paintThumb和paintTrack方法来更改轨道的宽度。
现在看起来像<----o---->
(非常细的轨迹线和椭圆形拇指/旋钮)。
问题:
直到最后旋钮都无法移动:
它看起来像什么: <---o------>
它应该是什么样子:<---------o>
我知道这是因为我使椭圆形不拉伸(stretch)(原始矩形随宽度拉伸(stretch))。
我完全不知道如何改变拇指移动的计算,以便它可以移动到最后。
我将非常感谢您的帮助。
代码如下:
public class TestScrollBarMain extends JFrame {
public TestScrollBarMain() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(500, 500));
JScrollPane s = new JScrollPane(p);
MyScrollBar b = new MyScrollBar();
s.setVerticalScrollBar(b);
getContentPane().add(s);
setSize(100, 100);
setVisible(true);
}
public static void main(String[] args) {
new TestScrollBarMain();
}
public class MyScrollBarUI extends BasicScrollBarUI {
@Override
protected void paintThumb(final Graphics g, final JComponent c, final Rectangle thumbBounds) {
if (thumbBounds.isEmpty() || !this.scrollbar.isEnabled()) {
return;
}
g.translate(thumbBounds.x, thumbBounds.y);
g.setColor(this.thumbDarkShadowColor);
g.drawOval(2, 0, 14, 14);
g.setColor(this.thumbColor);
g.fillOval(2, 0, 14, 14);
g.setColor(this.thumbHighlightColor);
g.setColor(this.thumbLightShadowColor);
g.translate(-thumbBounds.x, -thumbBounds.y);
}
@Override
protected void paintTrack(final Graphics g, final JComponent c, final Rectangle trackBounds) {
g.setColor(Color.black);
g.fillRect(trackBounds.width / 2, trackBounds.y, 3, trackBounds.height);
if (this.trackHighlight == BasicScrollBarUI.DECREASE_HIGHLIGHT) {
this.paintDecreaseHighlight(g);
} else if (this.trackHighlight == BasicScrollBarUI.INCREASE_HIGHLIGHT) {
this.paintIncreaseHighlight(g);
}
}
}
public class MyScrollBar extends JScrollBar {
MyScrollBar() {
super();
setUI(new MyScrollBarUI());
}
}
}
最佳答案
将其包含在您的 MyScrollBarUI 代码中:
protected void setThumbBounds(int x, int y,int width,int height)
{
super.setThumbBounds(x, y, 14, 14);
}
protected Rectangle getThumbBounds()
{
return new Rectangle(super.getThumbBounds().x,super.getThumbBounds().y,14,14);
}
protected Dimension getMinimumThumbSize()
{
return new Dimension(14,14);
}
protected Dimension getMaximumThumbSize()
{
return new Dimension(14,14);
}
关于java - 自定义 JScrollbar 问题(更改旋钮/拇指),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865108/
大家晚上好; 我java swing我正在尝试有一个如图所示的菜单 (图中左侧) 但是,看起来比我想象的要困难。我有边框布局,我把盒子布局放在中间,jscroll栏放在右边。在框布局内,我但带有图标的
我添加了以下代码,用于在文本字段中显示滚动条。但它仍然没有出现。有人可以帮我解决这个问题吗?我无法弄清楚错误发生在哪里: public JTextArea talkArea = new JTextAr
我想创建一个水平滚动条,其最大值设置为2(它应该只允许选择0、1或2作为值),但如果该值小于11,旋钮是不可见的。 scrlLineDist = new JScrollBar(); s
我正在尝试将垂直的 JScrollBar 放在 JPanel 的顶部。我可以很容易地添加滚动条,但是当我运行程序时,我的滚动条没有任何效果。我可以上下拖动它,但 JPanel 的内容不会移动。我已经阅
当我将JScrollBar的visibleAmount设置为等于最大值时,JScrollbar的 slider 消失了。我不知道为什么?我想让滚动条像这样: [] (拇指的大小充满了 JScrollb
我想自定义滚动条对象的输出。下面的代码适用于 JTextPane,那么 JScrollBar 的等效代码是什么? private JTextPane textPane; StyledD
如何根据滚轮鼠标旋转量以编程方式移动 JScrollBar? 最佳答案 您可以使用 JScrollBar 的 setValue 方法来设置滚动条的位置。 或者,您可以使用 JScrollBar 后面的
我想完全改变一个 scollbar 的外观,但是重写 JScrollBar 和 paintComponent 方法不起作用,track 和 thumb 被绘制了但是左右箭头保持不变。 我还在 JScr
所以我使用 Java Swing 为我的应用程序构建 UI,并使用自定义图像来替换丑陋的 Java 图像,自定义图像具有样式并且很容易集成到 Java Swing 中。 现在我的问题是我需要在应用程序
背景 希望在 JScrollPane 的角落添加一个滚动锁定按钮不遮挡视口(viewport)内容。下图显示了一个 JScrollPane包裹在 SwingNode在 JavaFX 应用程序中: 右下
(经过描述,代码中的事情就清楚了) 我有一个程序,其中包含 JScrollBar、JTextArea、JTextFields、JButtons 和其他一些东西。 (我只添加了SSCCE代码) 好的,我
我正疯狂地尝试制作一个更大的 JScrollBar。我想做一个更大的结和轨道...以及 JScrollBar 本身。 我在这里找到了一些代码来扩展我自己的 BasicScrollBarUI 来更改颜色
如果滚动 Pane 的 View 组件足够大,则滚动条拇指很小,因此无法在 Windows L&F 上正确绘制。 这只是一个审美问题;滚动条功能正常,其他 L&F 似乎一切都很好。 有办法解决吗?也许
我希望能够使用 JScrollBar 更改形状的位置和/或大小。我对 Swing 组件还很陌生,但已经弄清楚如何更改字符串的位置,但我不知道如何使用从 PaintComponent 绘制的形状来实现它
我的框架上有一个 JScrollBar,而不是 ScrollFrame 中,并且滚动条旋钮/ slider 非常薄。我尝试更改滚动条的属性,并尝试制作自定义 JScrollBar 组件,但我无法找到更
我有一个 jScrollbar,当我滚动它时(它的值从 0 到 100),我想在文本字段中显示该值。这是如何从 jScrollBar 获取值 AdjustmentListener adjListene
我有一系列列标签,它们独立于下面矩阵中显示的数据滚动。除了悬停时,我可以使整个滚动条透明。标签正对着数据,我喜欢这样,但是,在悬停时,除非我移动垂直滚动条(我宁愿不这样做),否则滚动条会遮住所有标签的
如何改变 JScroll Bar 中箭头的高度?我能够改变宽度滚动条,但箭头的高度仍然很小。感谢您的帮助。 最佳答案 绘画是由几个 BasicArrowButtons 完成的,它们的绘画方法中有这个:
在我的应用程序中,我有两个 Swing 组件在彼此之上,看起来像下图。问题是橙色组件需要一个垂直滚动条,但我希望组件的右边缘保持完全对齐(并且宽度可以随着用户使应用变宽或变窄而变化)。如果我使用网格布
因此有一个 JScrollBar 的构造函数,如下所示: public JScrollBar(int orientation, int value, int extent, int min, int
我是一名优秀的程序员,十分优秀!