我很难理解JButton的getInsets()方法返回的值。根据文档,getInsets()方法返回按钮边框的插图(如果在按钮上设置了边框),该插图指定边框需要绘制自身的空间量。
然而,在执行以下代码时:
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ButtonMarginInsets {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setTitle("Test Frame");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
JButton button = new JButton();
button.setText("Test Button");
System.out.println("Button Border Insets " + button.getBorder().getBorderInsets(button));
button.setMargin(new Insets(100, 10, 10, 10));
System.out.println("Button Insets " + button.getInsets());
contentPane.add(button);
frame.setContentPane(contentPane);
frame.pack();
frame.setVisible(true);
}
}
我得到了以下控制台输出:
按钮边框插图 java.awt.Insets[top=5,left=17,bottom=5,right=17]
按钮插图 java.awt.Insets[top=103,left=13,bottom=13,right=13]
以及以下窗口: Frame Image
我的问题是:- 如何通过top、left、bottom、right值指定边框需要绘制自身的空间量?
- 为什么这些插图在设置边距时会改变?