私が受け取った答えのために、私は今これを別の方法でやっています。
setPreferredSize() および getPreferredSize() をオーバーライドして、実際にコンポーネントのサイズを実際に入力された数値よりも大きい数値に設定し、実際よりも小さい数値を取得する方法はありますか?
ここでは、パネルのサイズを setPreferredSize() に実際に入力したサイズよりも 100 ピクセル大きく設定するために両方のメソッドをオーバーライドしています。希望のサイズを取得する場合は、setPreferredSize() に入力した値を返すようにします。
Swing が getPreferredSize() を使用してサイズを設定していると思われますが、これを達成するためにオーバーライドできる別のメソッドはありますか、それとも別のメソッドを作成して必要な値を返す必要がありますか?
import java.awt.*;
import java.beans.Transient;
import javax.swing.*;
public class PreferredSize extends JPanel{
public static void main(String[] args) {
JPanel background = new JPanel();
PreferredSize ps = new PreferredSize();
ps.setPreferredSize(new Dimension(200, 200));
ps.setBackground(Color.CYAN);
JPanel panel = new JPanel();
panel.setBackground(Color.BLUE);
panel.setPreferredSize(new Dimension(200, 200));
background.add(ps);
background.add(panel);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(background);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
@Override
public void setPreferredSize(Dimension preferredSize) {
super.setPreferredSize(new Dimension(preferredSize.width+100, preferredSize.height+100));
}
@Override
@Transient
public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width-100, super.getPreferredSize().height-100);
}
}
ありがとう。