当我将 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()));
}
}
请注意,我在 RED 中绘制了 btn1 的“PreferredSize”,以证明preferredSize 实际上比按钮本身大。
我的问题是,如何确定绘制按钮的宽度和高度,而不是 JButton 的preferredSize?
非常感谢任何帮助,谢谢!
更新
因为我实际上需要它来为所有 Swing 组件工作,所以这是一个包含更多组件的屏幕截图。
不幸的是,我需要弄清楚这一点,确定可见小部件的“真实”大小对我的应用程序至关重要。