每当我在程序中更改JLabel,JTextAreas,JRadioButtons等的字体类型时,它会改变所有这些东西都在的面板的大小,我必须打包()框架以使它们全部适合再次改变主框架的尺寸,我显然不想要。有没有办法改变字体类型而不改变其他任何东西的大小?
答案 0 :(得分:1)
不容易,JLabel,JTextArea等的默认大小被委托给“外观”,这使用字体,大小和文本的字体度量来确定大小。
更大的字体,更大的按钮。
我建议你接受这个,并使用一个处理得很好的布局管理器......
即。不要假设精确的布局,而是使用基于网格的东西,有足够的自由空间,以便字体大小可以变化。
如果您仍然非常渴望这样做,您可以使用以下内容覆盖控件的首选大小,尽管这预先假设您正在使用一个尊重这些提示的布局管理器。
public static void main(String [] args) {
JFrame frame = new JFrame();
JTextField small = new JTextField("small");
JTextField big = new JTextField("big");
big.setFont(big.getFont().deriveFont(Font.BOLD, 40));
big.setPreferredSize(new Dimension(123, 20));
big.setMaximumSize(new Dimension(123, 20));
frame.setLayout(new FlowLayout());
frame.add(small);
frame.add(big);
frame.setVisible(true);
}