【发布时间】:2014-06-14 22:43:52
【问题描述】:
我的程序使用了大量的 JButton,我想知道如何更改特定面板中所有现有按钮的字体,而无需单独更改每个按钮的字体。
【问题讨论】:
-
@Arvind
UIManager值将更改其程序中所有JButtons的字体。 OP 只想更改单个JPanel中的内容。
我的程序使用了大量的 JButton,我想知道如何更改特定面板中所有现有按钮的字体,而无需单独更改每个按钮的字体。
【问题讨论】:
UIManager 值将更改其程序中所有JButtons 的字体。 OP 只想更改单个 JPanel 中的内容。
语法是
setFont(new Font("fontName", fontStyle, fontSize));
除非你有自定义字体,否则它会是
setFont(font);
【讨论】:
您可以创建自己的扩展JButton 的类并设置该类的字体,然后将其用于JPanel 中的所有按钮:
class MyJButton extends JButton {
MyJButton() {
super();
setFont(new Font("Arial", Font.BOLD, 40));
}
}
您可以覆盖您正在使用的任何构造函数。
【讨论】:
我想知道如何更改所有现有的字体 特定面板中的按钮,无需单独更改 每个按钮的字体
从技术上讲,您不能,您需要能够迭代容器并单独更改每个按钮...
假设所有按钮都在一个容器上(并且不包含在多个子容器中),您可以简单地遍历给定容器中的所有组件,测试它们是否是 JButton 并应用新的字体。
Font font = new Font("Arial", Font.BOLD, 48);
for (Component comp : getComponents()) {
if (comp instanceof JButton) {
((JButton)comp).setFont(font);
}
}
例如...
【讨论】:
updateUI,这并不总是很好:P