有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

设置组件大小时swing Java重用维度对象

禁止使用多个预设的标注对象在屏幕上设置不可调整大小的组件的首选尺寸。 例如:两个文本字段均应为80x20 px,因此:

Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);

共 (1) 个答案

  1. # 1 楼答案

    是的,它是“安全的”。引自Java Performance Tuning

    [...] This same Dimension object can be reused for multiple components. [...]

    但这取决于你想要什么。请注意,Component中的实现不复制参数的内容,而是存储引用:

    public void setPreferredSize(Dimension preferredSize) {
        ...
        this.prefSize = preferredSize;
        ...
    }
    

    因此,更改d将影响存储在tf1tf2中的维度对象

    (我想说的是,下面的代码可能不会达到您预期的效果。)

    Dimension d = new Dimension(80, 20);
    tf1.setPreferredSize(d);
    
    d.width += 1;               // <  will affect also tf1.
    tf2.setPreferredSize(d);