代码之家  ›  专栏  ›  技术社区  ›  Mike Caron

如何自定义jradiobutton的渲染?

  •  1
  • Mike Caron  · 技术社区  · 14 年前

    我创建了一个jradiobutton子类,其中我重写了paintcomponent方法,如下所示:

    @Override
    protected void paintComponent(Graphics g) {
        g.drawImage(
            isSelected() ? 
               getCheckedImg() :
               getBasicImg()
        , 0, 0, this);
    }
    

    但似乎一旦按钮被画出来,它就会永远使用这个图像。所选的测试似乎没有任何效果。图形是缓存的还是Java的?如何为自定义jradiobutton提供选中和未选中的图像?是否必须编写自定义UI?

    3 回复  |  直到 9 年前
        1
  •  4
  •   camickr    14 年前

    读取API。有如下方法:

    setIcon()
    setSelectedIcon()
    

    除此之外,你可以用它来代替传统的绘画。

        2
  •  2
  •   trashgod    14 年前

    为了保留功能,不难扩展 BasicRadioButtonUI 并覆盖代理的 paint() 方法。您可以使用 setUI() .

        3
  •  -3
  •   Brian S    14 年前

    即使在JavaSwing中,我一般也会重写。 paint 而不是 paintComponent 以便定制外观。我相信违约 油漆 将呼叫 涂料组分 ,但仅当组件 必须 重新粉刷。