Swingコンポーネント(JButtonなど)をJPanelに追加すると、「推奨サイズ」でレンダリングされます。
ただし、実際の推奨サイズは、ペイントされたボタンよりも大きくなります。その周りに目に見えない境界線があるように見えます。
これが私のテストパネルの簡単なフレームです:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestPanel pnl = new TestPanel();
frame.getContentPane().add(pnl);
frame.pack();
frame.setVisible(true);
これが私のテストパネルです...
public class TestPanel extends JPanel {
JButton btn1 = new JButton("Test1");
JButton btn2 = new JButton("Test2");
public TestPanel() {
this.add(btn1);
this.add(btn2);
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
Dimension dim = btn1.getPreferredSize();
g.drawRect(btn1.getX(), btn1.getY(), (int)(dim.getWidth()), (int)(dim.getHeight()));
}
}
btn1の「PreferredSize」を赤でペイントして、preferredSizeが実際にはボタン自体よりも大きいことを示していることに注意してください。
私の質問は、JButtonのpreferredSizeではなく、ペイントされたボタンの幅と高さをどのように決定できるかということです。
どんな助けでも大歓迎です、ありがとう!
アップデート
すべてのSwingコンポーネントで実際にこれを機能させる必要があるため、より多くのコンポーネントを使用したスクリーンショットを次に示します。
残念ながら、これを理解する必要があります。表示されるウィジェットの「実際の」サイズを決定することは、私のアプリケーションにとって非常に重要です。