我的讲师为图形定义了this API。
这很简单,但我现在花了一两个小时试图弄清楚如何让简单的图形操作出现。
所以我有一个扩展TopLevel的T类,它是我的主框架。我还有一个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)
。当我运行应用程序时,我会看到一个带有我创建的按钮的空白画布。
感谢任何帮助。
答案 0 :(得分:2)
绘图文字并不像你想象的那么简单。
y位置代表字体的基线(大多数文本所在的位置。还有一条不错的线,位于基线下方的字符将扩展为('g'和'p'等字符。) / p>
字体也有上升。这是基线上方典型字符的“高度”(显然不包括下降)
来自Measuring Text的图片
为了正确绘制文本,您必须始终将上升添加到y位置...
FontMetrics fm = g.getFontMetrics();
g.drawString("Hello", 0, fm.getAscent());
您还可以丢失repaint
调用,这会导致重绘管理器(最终)一遍又一遍地调用您组件的paint
方法......再次... < / p>
在Swing中,Graphics
通常设置为使颜色为组件前景色。您可能想尝试更改颜色以确保。
在尝试绘制任何内容之前尝试使用g.setColor(Color.RED);
之类的内容。
答案 1 :(得分:0)
T.setVisible(真); //施工后