如何使用此Java GUI API绘制内容?

时间:2012-12-02 04:12:12

标签: java swing user-interface paintcomponent drawstring

我的讲师为图形定义了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)。当我运行应用程序时,我会看到一个带有我创建的按钮的空白画布。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

绘图文字并不像你想象的那么简单。

y位置代表字体的基线(大多数文本所在的位置。还有一条不错的线,位于基线下方的字符将扩展为('g'和'p'等字符。) / p>

字体也有上升。这是基线上方典型字符的“高度”(显然不包括下降)

enter image description here

来自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(真); //施工后