我的导师定义了this图形API。
这非常简单,但我现在花了一两个小时试图找出如何显示简单的图形操作。
所以我有一个 T 类,它扩展了 TopLevel,它是我的主框架。我还有一个 Pad P,它扩展了 Pad,这是其 PaintComponent 方法的主体:
@Override
protected void paintComponent(Graphics2D g) {
super.paintComponent(g);
g.drawString("Hello", 0, 0);
g.fill(new Rectangle(5, 5));
repaint(); //(Probably don't need)
}
然后我调用 T.add(P)
,(我也调用 T.addButton(..)
和 T.display(true)
code>。当我运行应用程序时,我会看到一个空 Canvas ,其中包含我创建的按钮。
感谢任何帮助。
最佳答案
绘制文本并不像你想象的那么简单。
y 位置代表字体的基线(大多数文本所在的点。还有一条像样的线,位于基线下方的字符将延伸到该位置(例如“g”和“p”等字符)。
字体也有上升。这是基线以上典型字符的“高度”(显然不包括下降)
图片来自Measuring Text
为了正确绘制文本,您必须始终将上升添加到 y 位置...
FontMetrics fm = g.getFontMetrics();
g.drawString("Hello", 0, fm.getAscent());
您也可能会丢失 repaint
调用,这将导致重绘管理器(最终)一遍又一遍地调用您组件的 paint
方法。 .再次...
在 Swing 中,Graphics
通常被设置为使颜色成为组件的前景色。为了确定起见,您可能需要尝试更改颜色。
在尝试绘制任何内容之前,请尝试使用类似 g.setColor(Color.RED);
的内容。
关于java - 我如何使用这个 Java GUI API 来绘制东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666335/