2016-04-08 10 views
0

Мой GUI имеет JTable со столбцом с булевым типом, который отображается как JCheckBox. Металлические цвета не подходят к моему GUI, так что я использовал следующий код:Значок UIManager и JCheckBox

ImageIcon icon = new ImageIcon(MyGUI.class.getResource("resources/checkbox1.png")); 
UIManager.put("CheckBox.icon", icon1); 

Я получил невыделенный флажок Я хотел, но там нет ключа в UIManager, что я могу изменить, чтобы настроить выбранный JCheckBox. Есть ли способ изменить выбранный JCheckBox в глобальном масштабе? P.S. Я пробовал как непрозрачный, так и прозрачный фон, результат тот же - флажок не работает так, как он есть.

+0

[Изменить внешний вид и чувство] (http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/index.html)? – MadProgrammer

ответ

0

Я нашел решение в Интернете, и изменил его для себя.

class CheckBoxIcon implements Icon { 
    public void paintIcon(Component component, Graphics g, int x, int y) { 
     AbstractButton abstractButton = (AbstractButton)component; 
     ButtonModel buttonModel = abstractButton.getModel(); 

     if(buttonModel.isSelected()) 
      g.drawImage(createImage("resources/checkbox2.png"), x, y, component); 
     else 
      g.drawImage(createImage("resources/checkbox1.png"), x, y, component); 
    } 
    public int getIconWidth() { 
     return 13; 
    } 
    public int getIconHeight() { 
     return 13; 
    } 

    protected Image createImage(String path) { 
     URL imageURL = CheckBoxIcon.class.getResource(path); 
     Image icn = null; 

     if (imageURL == null) { 
      if(null==icn){ 
       //System.out.println("path: "+path); 
       icn = new ImageIcon (MyGUI.class.getResource(path)).getImage(); 
       if(null!=icn) 
        return icn; 
       else{ 
        System.err.println("Resource not found: " + path); 
        return null; 
       } 
      } 
      return null; 
     } else { 
      return (new ImageIcon(imageURL)).getImage(); 
     } 
    } 
} 

Затем используйте эту строку в коде.

UIManager.put("CheckBox.icon", new CheckBoxIcon()); 

 Смежные вопросы

  • Нет связанных вопросов^_^