【发布时间】:2011-11-16 05:20:04
【问题描述】:
我只是在玩 Swing,并且正在开发一个非常简单的 Swing 组件。我有一个从 JComponent 类继承的组件,它的 UI 是从 ComponentUI 继承的。 paint() 方法如下所示:
public void paint(Graphics g, JComponent c) {
int x = c.getX();
int y = c.getY();
c.setBounds(x, y, 100, 25);
int width = c.getWidth();
int height = c.getHeight();
Rectangle r = g.getClipBounds();
g.fillRect(0, 0, 10, 10);
g.drawString("Baf!", 3, 3);
}
但是完全不可能得到r.height 的另一个值而不是1。组件是给定的宽度,但高度总是只有一个点。有没有其他人使用过类似的组件?不幸的是,没有任何简单的教程。所有教程都是难以理解的复杂(或过时)。
布局管理器似乎将此组件的大小始终调整为 1 高度(无论最小值)。
【问题讨论】:
-
您真的想为您的组件提供 UI 还是只需要覆盖
JComponent.paintComponent(Graphics)?在许多情况下,不会为特定组件创建 UI,因为这是额外的工作。 -
这是一个有教育意义的例子。所以我以这种高级的方式来做。
c.setBounds(x, y, 100, 25);这一行是多余的。从剪贴板粘贴代码时忘记删除它。
标签: java swing paint jcomponent paintcomponent