选择它时禁用JToggleButton的标准重绘

时间:2012-09-01 11:49:12

标签: java swing jtogglebutton

我希望我的JToggleButton在选中它时不重绘。我通过一对单词指示状态改变(“check / next”)。 标准行为是蓝色灯光,但我想禁用它。

2 个答案:

答案 0 :(得分:3)

也许你可以在ImageIcons上显示这些文字。例如:

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToggleButton;

public class ToggleFun {
   private static final Color BACKGROUND_COLOR = new Color(200, 200, 255);

   public static void main(String[] args) {
      int biWidth = 60;
      int biHeight = 30;
      BufferedImage checkImg = new BufferedImage(biWidth, biHeight, BufferedImage.TYPE_INT_RGB);
      BufferedImage nextImg = new BufferedImage(biWidth, biHeight, BufferedImage.TYPE_INT_RGB);

      Graphics2D g2 = checkImg.createGraphics();
      g2.setColor(BACKGROUND_COLOR);
      g2.fillRect(0, 0, biWidth, biHeight);
      g2.setColor(Color.black);
      g2.drawString("Check", 10, 20);
      g2.dispose();

      g2 = nextImg.createGraphics();
      g2.setColor(BACKGROUND_COLOR);
      g2.fillRect(0, 0, biWidth, biHeight);
      g2.setColor(Color.black);
      g2.drawString("Next", 15, 20);
      g2.dispose();

      ImageIcon checkIcon = new ImageIcon(checkImg);
      ImageIcon nextIcon = new ImageIcon(nextImg);

      JToggleButton toggleBtn = new JToggleButton(checkIcon);
      toggleBtn.setSelectedIcon(nextIcon);
      toggleBtn.setContentAreaFilled(false);
      toggleBtn.setBorder(BorderFactory.createLineBorder(Color.black));

      JPanel panel = new JPanel();
      panel.add(toggleBtn);
      JOptionPane.showMessageDialog(null, panel);

   }
}

答案 1 :(得分:3)

请参阅:AbstractButton.setContentAreaFilled(false)

但请注意,用户通常更喜欢遵循“最少惊喜之路”的GUI元素。这种类型的渲染可能更好地描述为通过该路径旁边的灌木丛发生一些崩溃。