禁用JToggleButton上的启用效果

时间:2016-04-25 14:54:36

标签: java swing jbutton jtogglebutton

我有一个使用Swing的应用程序用于它的UI。我想要一个按钮来切换应用程序正在使用的通信类型。我想使用切换按钮来识别所选择的通信类型。

我的问题是我不希望按钮的颜色在点击后发生变化。目前按钮看起来像这样...... 非选择

http://i.stack.imgur.com/Ccdie.png

然后点击它看起来像这样......

选择的

http://i.stack.imgur.com/Q5yp4.png

文字的变化是我想要的,但我希望它们具有相同的颜色/风格。

这是我的代码......

  String downloadFilepath = "your path to save file";
  HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
  chromePrefs.put("profile.default_content_settings.popups", 0);
  chromePrefs.put("download.default_directory", downloadFilepath);
  ChromeOptions options = new ChromeOptions();
  options.setExperimentalOption("prefs", chromePrefs);
  DesiredCapabilities cap = DesiredCapabilities.chrome();
  cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
  cap.setCapability(ChromeOptions.CAPABILITY, options);
  WebDriver driver = new ChromeDriver(cap);

我的想法是,当选择背景为标准背景颜色时设置背景会解决这个问题,但它看起来不像。有什么想法吗?

谢谢!

答案: 我转而使用JButton,感谢大家的帮助!

    JToggleButton tglbtnCommunicationType = new JToggleButton("AlwaysOn");
    tglbtnCommunicationType.setFocusPainted(false);
    tglbtnCommunicationType.addChangeListener(new ChangeListener( ) {
        public void stateChanged(ChangeEvent tgl) {
            System.out.println("ChangeEvent!");
            if(tglbtnCommunicationType.isSelected()){
                tglbtnCommunicationType.setText("REST");
                tglbtnCommunicationType.setBackground(UIManager.getColor("Button.background"));
            }
            else
            {
                tglbtnCommunicationType.setText("AlwaysOn");
            };
        }
    });

1 个答案:

答案 0 :(得分:1)

你可以只使用JButton而不是JToggleButton来实现,

JButton showButton = new JButton("AlwaysOn");
showButton.addActionListener(new ActionListener()
{
  public void actionPerformed(ActionEvent e)
  {
     String currentText = showButton.getText();
     if("AlwaysOn".equals(currentText)){
          showButton.setText("REST");
     }else{
          showButton.setText("AlwaysOn");
      }
  }
});