我想创建一个具有自定义外观的自定义 JComponent(特别是自定义 JToggleButton)。我想做的只是覆盖组件的默认绘画并绘制我自己的东西(例如图像)
这不是如何做到这一点的问题(我相当精通 Java2D)。我想问的是我必须采取哪些步骤来确保我的组件具有我想要的大小?
到目前为止我所做的测试都是有问题的。我绘制了一个 200*100 像素的图像,布局管理器仅显示组件的一部分。我尝试了 setSize、setPreferedSize、setMinimumSize,但没有一个起作用。
最佳答案
Swing 模型无法完全保证您将获得一定量的空间 - 布局管理器可以并且确实忽略最小和最大尺寸,尽管通常它们只忽略其中一个。
如果您有固定大小的组件,则应覆盖 getMinimumSize
、getPreferredSize
和 getMaximumSize
以全部返回该固定大小的尺寸,你需要。如果可以在一定程度上缩放,请根据需要调整最小值和最大值。重写这些方法可以避免某些第三方代码调用 set*Size
方法并覆盖您的选择(布局管理器仍会调用 setSize
来告诉组件它实际分配的大小是多少)是正常的)。它还确保在布局管理器开始布局组件之前设置尺寸。
如果布局发生后组件的大小可能会发生变化,则需要确保正确地使组件布局无效,但如果可以的话请避免这样做。
关于java - Swing自定义组件尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520414/