在Mac上的JFrame上绘制一个矩形

时间:2013-12-18 19:02:49

标签: java macos jframe paintcomponent

我在Mac上绘制一个矩形时遇到问题。 代码在窗口上工作,并且在框架上绘制了一个矩形,但在Mac上框架没有矩形。我在两个平台上编译了完全相同的代码。

以下是代码:

mainClass.java

import javax.swing.JFrame;
import java.awt.Rectangle;

public class mainClass
{
    public static void main(String[] args)
    {
        JFrame window = new JFrame();
        window.setSize(640, 480);
        window.setTitle("New Window");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);

        drawingComponent DC = new drawingComponent();
        window.add(DC);
    }
}

drawingComponent.java

import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import java.awt.Rectangle;

public class drawingComponent extends JComponent
{
    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;

        Rectangle rect1 = new Rectangle(5, 5, 100, 200);
        g2.draw(rect1);
    }
}

它们保存在2个不同的.java文件中。我只在两个平台上编译了mainClass.java。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您应该做的最后一件事是将框架设置为可见,因为这是绘画发生的点。如果先设置可见,则修改组件,直到屏幕重新绘制为止,您才会看到更改。由于某种原因屏幕失效时会发生重新绘制。

正是为什么这在mac上显而易见我无法说明,可能在JVM的实现中有一些细微差别。如果您必须在可见后更新UI,则可以重新验证它以使其正确重新绘制。 This answer有一些进一步的细节。