java - Swing自定义组件尺寸

标签 java swing

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

不是如何做到这一点的问题(我相当精通 Java2D)。我想问的是我必须采取哪些步骤来确保我的组件具有我想要的大小?

到目前为止我所做的测试都是有问题的。我绘制了一个 200*100 像素的图像,布局管理器仅显示组件的一部分。我尝试了 setSize、setPreferedSize、setMinimumSize,但没有一个起作用。

最佳答案

Swing 模型无法完全保证您将获得一定量的空间 - 布局管理器可以并且确实忽略最小和最大尺寸,尽管通常它们只忽略其中一个。

如果您有固定大小的组件,则应覆盖 getMinimumSizegetPreferredSizegetMaximumSize 以全部返回该固定大小的尺寸,你需要。如果可以在一定程度上缩放,请根据需要调整最小值和最大值。重写这些方法可以避免某些第三方代码调用 set*Size 方法并覆盖您的选择(布局管理器仍会调用 setSize 来告诉组件它实际分配的大小是多少)是正常的)。它还确保在布局管理器开始布局组件之前设置尺寸。

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

关于java - Swing自定义组件尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520414/

相关文章:

java - Map Reduce程序将多个xml文件合并为一个xml文件

java - 如何在框架中查找组件

java - JMenuBar 不显示

java - JMeter 测试未运行

java - 如何识别仅包含空格的字符串

java - Activity 方向在后台发生变化

java - 简单的 Java 应用程序,用于计算不定数量的输入数字的平均值

java - 不兼容的类型 : inference variable E#1 has incompatible upper bounds Enum<E#2>

java - 显示数组列表,其中每个元素都在新行上?

java - JTable 缺少第一行