Java摇摆不定的drawRect额外像素

我发现了一个奇怪的图形问题 drawRect – 它在矩形形状的左下角和右下角增加了两个额外的像素.这是虚拟机的问题吗?或者我的理解有什么错误?我在windows 8.1 64bit java SE 1.8.0_25上运行这个。

EDIT: 我已经编辑了代码,以做适当的覆盖的 paintComponent我还注意到,当窗口第一次出现时,我确实看到了附件截图中的内容(有额外的像素),但当我将其调整到一个较小的窗口并返回时(从而迫使EDT再次重新绘制整个面板)–像素消失,并且在随后的窗口调整中不会再次出现。我甚至添加了 fillRect 以减少伪装的影响(如果有的话),但还是没有用。

我不知道该怎么做。

EDIT 2.SSCCE修改为从EDT运行–结果还是一样。 SSCCE修改为从EDT运行 – 还是一样的结果。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class GuiTest extends JFrame
{
    public GuiTest()
    {
        super( "Test" );

        setContentPane( new MyPanel() );
        setSize( new Dimension( 200, 200 ) );
        setVisible( true );
    }

    public static void main( String[] args )
    {
        SwingUtilities.invokeLater( new Runnable()
        {
            @Override
            public void run()
            {
                new GuiTest();
            }
        } );
    }

    class MyPanel extends JPanel
    {
        @Override
        protected void paintComponent( Graphics g )
        {
            super.paintComponent( g );
            g.setColor( Color.WHITE );
            g.fillRect( 0, 0, getWidth(), getHeight() );
            g.setColor( Color.BLACK );
            g.drawRect( 10, 10, 100, 100 );
        }
    }
}

screenshot

解决方案:

哈! 我刚刚注意到这是一个硬件加速问题。如果我通过使用 -Dsun.java2d.d3d=false 我已经检查了我的显示适配器(NVIDIA GeForce GTX 850M)驱动程序(按照@Fast Snail的建议),它是最新的。我检查了我的显示适配器(NVIDIA GeForce GTX 850M)的驱动程序(根据@Fast Snail的建议),并且它是最新的。这很奇怪–然而,仍然没有答案,问题的起源至少是明确的。

给TA打赏
共{{data.count}}人
人已打赏
未分类

闪亮。是否可以在tabPanel()的同一个标题中应用两个不同的文字大小?

2022-9-13 13:01:37

未分类

kubernetes无法在VirtualCenter部分存储数据,分节变量insecure-flag。

2022-9-13 13:01:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索