我在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。
感谢任何帮助!
答案 0 :(得分:1)
您应该做的最后一件事是将框架设置为可见,因为这是绘画发生的点。如果先设置可见,则修改组件,直到屏幕重新绘制为止,您才会看到更改。由于某种原因屏幕失效时会发生重新绘制。
正是为什么这在mac上显而易见我无法说明,可能在JVM的实现中有一些细微差别。如果您必须在可见后更新UI,则可以重新验证它以使其正确重新绘制。 This answer有一些进一步的细节。