gpt4 book ai didi

java - 我可以在不更改 JPanel 和 JFrame 大小的情况下更改字体类型吗?

转载 作者:行者123 更新时间:2023-12-01 09:14:33 24 4
gpt4 key购买 nike

每次我在程序中更改 JLabels、JTextAreas、JRadioButtons 等的字体类型时,它都会更改所有这些内容所在的面板的大小,并且我必须 pack() 框架以使它们全部适合再次改变主框架的大小,这显然是我不想要的。有没有办法改变字体类型而不改变其他任何东西的大小?

最佳答案

这并不容易,JLabel、JTextArea 等的默认大小被委托(delegate)给“外观和感觉”,这使用字体的字体规范、大小和文本来确定大小。

字体越大,按钮越大。

我建议您接受这一点,并使用一个布局管理器来很好地处理...

即不要假设精确的布局,而是使用基于网格且具有足够可用空间的内容,以便字体大小可以变化。

如果您仍然迫切希望这样做,您可以使用以下内容覆盖控件的首选大小,尽管这预先假设您正在使用尊重这些提示的布局管理器。

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);
}

关于java - 我可以在不更改 JPanel 和 JFrame 大小的情况下更改字体类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com