2009-10-05 45 views
2

我想创建一个自定义的JComponent(特别定制JToggleButton中)具有自定义外观。我想要做的只是覆盖组件的默认绘画和绘制我自己的东西(例如图像)摇摆custon JComponent的大小

这是不是如何做到这一点(我对Java2D相当精通) 。我想问的是我必须采取哪些措施来确保我的组件具有我希望的尺寸?

到目前为止,我也做了测试是有问题的。我画了一幅图像,可以说200 * 100像素,布局管理器只显示我的组件的一部分。我尝试过setSize,setPrefferedSize,setMinimumSize,但都没有工作。

回答

4

有在Swing模型,你会被给予的空间中一组量完全保证没有办法 - 布局管理器可以做忽略最小和最大尺寸,尽管通常他们只忽略一个或另一个。

如果您有一个固定大小的组件,则应该覆盖getMinimumSize,getPreferredSizegetMaximumSize以返回所需的固定大小的维度。如果您可以根据需要调整最小值和最大值。重写方法避免了一些第三方的代码调用set*Size方法和覆盖你的选择(布局管理器将仍然称setSize告诉什么大小是实际分配这是正常的部件)。它还确保在布局管理器开始布置组件之前设置大小。

如果在布局发生后组件的大小可能发生变化,您需要确保正确地使组件布局无效,但是如果可以的话避免这样做。

2

大小由LayoutManager的确定。如果您将使用空的LayoutManager,您将能够强制指定大小(和位置)。否则你可以重载getPreferedSize(),这将被一些布局管理员所尊重。

+0

我没有覆盖getPrefferedSize,我也尝试简单地设置首选大小,这些方法都没有奏效。什么是在Swing中设置组件大小的“正确”方法?挥杆队怎么做?正如我所说的, – 2009-10-05 14:29:05

+0

,LayoutManager使用getPreferredSize()。这可能会决定忽略它。要完全控制组件的大小,需要为包含该按钮的容器使用特定的布局管理器(使用null布局+ setSize(w,h)来强制指定大小)。 – 2009-10-05 14:58:22