在使用JScrollPane类几天之后,我遇到了一个关于水平JScrollBar组件的非常奇怪的渲染问题。在默认摆动“金属”外观中使用这些组件时,水平滚动条的中心抓手图案似乎在特定内容/视口尺寸下呈现不正确。
下面的代码打开了一个带有嵌入式JScrollPane组件的简单JFrame窗口,该窗口似乎表现出奇怪的渲染行为,因为水平滚动条被拖向最右边的外部性。由于水平滚动条抓取器的渲染似乎取决于内容/视口的大小,因此此代码将打开显式尺寸为1402x800的父JFrame。不同尺寸似乎具有相同的效果,包括1440x900分辨率下的最大化窗口,并且在非合成桌面环境(即运行基本/经典主题的Windows XP或Vista / 7)中问题更容易出现。
public class Main
{
public static void main(String[] args)
{
ScrollbarTest application = new ScrollbarTest();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class ScrollbarTest extends JFrame
{
public ScrollbarTest()
{
super("Scrollbar Test");
Container container = getContentPane();
JScrollPane scrollPane =
new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JPanel contentPanel = new JPanel();
contentPanel.setPreferredSize(new Dimension(8000, 8000));
scrollPane.getViewport().add(contentPanel);
container.add(scrollPane);
setSize(1402,800);
setVisible(true);
}
}
由于我被禁止直接将图像上传到此论坛,因此我放置了一张图像here,描述了我目前遇到的异常情况。如您所见,当我将水平滚动条拖向其右端时,中心抓取器功能无法正确渲染。请注意,这似乎不会发生在所有窗口大小,但1402x800的初始JFrame维度肯定会在我的系统上发挥作用。说实话,直到我从1280x800屏幕移动到1440x900屏幕后,这个问题才显现出来。
感谢收到有关此异常的可重复性和/或原因的任何评论。
最好的问候,李。
答案 0 :(得分:0)
感谢大家花时间阅读这篇文章。由于我们不是专业程序员,我们必须寻求建议,以确保我们正确使用Java API。 我们让Sun的人们看看我们的问题,这看起来似乎是摆动“金属”外观的错误。请参阅下面的相关信函。
亲爱的Java开发人员,
感谢您报告此问题。
我们已确定此报告是 一个新的bug并将bug输入我们的 Bug下的内部bug跟踪系统 Id:7017935。
您可以在Java上监控此错误 Bug数据库在 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7017935
可能需要一两天才能完成 bug出现在这个外部 数据库。如果您是该会员 Sun开发者网络(SDN),有 一旦出现错误,还有两个选项 可见。
投票指出错误点击http://bugs.sun.com/bugdatabase/addVote.do?bug_id=7017935。
- 醇>
将报告添加到您的Bug监视列表中。您将收到一封电子邮件 更新此错误时的通知。 点击 “http://bugs.sun.com/bugdatabase/addBugWatch.do?bug_id=7017935”。
Sun Developer Network (http://developers.sun.com)是免费的 Sun提供的服务。加入, 访问 “https://softwarereg.sun.com/registration/developer/en_US/new_user”。
问候,Java开发人员支持
最好的问候,李。