我想縮放JCheckBox
與其設置文字的字體大小相同。例如,當我增加Font
大小的複選框本身保持很小,但它應該與文本增長或我想設置框的自己的尺寸:縮放JCheckBox框
JCheckBox chckbxTest = new JCheckBox("Test");
chckbxTest.setFont("Arial", Font.BOLD, 27));
如果可能的話,我需要爲JRadioButton
相同的功能。不幸的是,我還沒有找到任何關於此功能的文檔。
解決方案:
被標記的答案幫助我建立一個完全可伸縮的自己風格JCheckBox的。
[...]
JCheckBox myCheckBox = new JCheckBox("Test");
myCheckBox.setIcon(new SimpleCheckboxStyle(20));
[...]
class SimpleCheckboxStyle implements Icon {
int dim = 10;
public SimpleCheckboxStyle (int dimension){
this.dim = dimension;
}
protected int getDimension() {
return dim;
}
public void paintIcon(Component component, Graphics g, int x, int y) {
ButtonModel buttonModel = ((AbstractButton) component).getModel();
int y_offset = (int) (component.getSize().getHeight()/2) - (int) (getDimension()/2);
int x_offset = 2;
if (buttonModel.isRollover()) {
g.setColor(new Color(0, 60, 120));
} else if (buttonModel.isRollover()) {
g.setColor(Color.BLACK);
} else {
g.setColor(Color.DARK_GRAY);
}
g.fillRect(x_offset, y_offset, fontsize, fontsize);
if (buttonModel.isPressed()) {
g.setColor(Color.GRAY);
} else if (buttonModel.isRollover()) {
g.setColor(new Color(240, 240, 250));
} else {
g.setColor(Color.WHITE);
}
g.fillRect(1 + x_offset, y_offset + 1, fontsize - 2, fontsize - 2);
if (buttonModel.isSelected()) {
int r_x = 1;
g.setColor(Color.GRAY);
g.fillRect(x_offset + r_x + 3, y_offset + 3 + r_x, fontsize - (7 + r_x), fontsize - (7 + r_x));
}
}
public int getIconWidth() {
return getDimension();
}
public int getIconHeight() {
return getDimension();
}
}
不錯的動態解決方案。 – camickr
什麼是你使用的'fontsize'變量?我試過你的代碼,字體大小初始化失蹤。然後我在構造函數中更改它以獲取暗淡的值,並且它工作正常。請讓我知道如果這是正確的做,或者如果字體大小意味着別的,並相應地編輯你的文章。儘管如此,你的代碼非常好,它幫助了我。 – Thanasis