Java 如何实际选择JButton

Java 如何实际选择JButton,java,swing,jbutton,Java,Swing,Jbutton,这将是一个真正的理论问题,请容忍我一点。我需要用我的按钮做点什么,我不知道从哪里开始 所以我需要的是能够点击一个JButton,并有一个视觉证明它被选中,例如红色边框或白色背景或其他东西。我希望它保持这样,直到以同样的方式选择另一个JButton。现在,当我点击一个Jbutton时,会有一个很短的视觉显示,它被点击了,但我不能让它持续更长时间 我试着和ChangeListeners玩了一会儿,但没有结果 所以我的问题基本上是:你建议我尝试什么样的方法 1-返回ChangeListener,这是唯

这将是一个真正的理论问题,请容忍我一点。我需要用我的按钮做点什么,我不知道从哪里开始

所以我需要的是能够点击一个JButton,并有一个视觉证明它被选中,例如红色边框或白色背景或其他东西。我希望它保持这样,直到以同样的方式选择另一个JButton。现在,当我点击一个Jbutton时,会有一个很短的视觉显示,它被点击了,但我不能让它持续更长时间

我试着和ChangeListeners玩了一会儿,但没有结果

所以我的问题基本上是:你建议我尝试什么样的方法

1-返回ChangeListener,这是唯一的选项 2-JButton有另一个选项,正好可以做到这一点


如果太模糊,很抱歉,但我发现的其他所有内容都非常具体,没有回答我的问题。

我想知道您是否要使用JToggleButton,也许是添加到ButtongGroup的按钮,以便一次只选择一个按钮

编辑
例如:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class ToggleArray extends JPanel {
   private static final int SIDE = 5;

   public ToggleArray() {
      ActionListener listener = new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            System.out.println("Button selected: " + e.getActionCommand());
         }
      };

      setLayout(new GridLayout(SIDE, SIDE));
      ButtonGroup btnGroup = new ButtonGroup();
      for (int i = 0; i < SIDE * SIDE; i++) {
         String text = String.format("[%d, %d]", i % SIDE, i / SIDE);
         JToggleButton btn = new JToggleButton(text);
         btn.addActionListener(listener);
         btnGroup.add(btn);
         add(btn);
      }
   }

   private static void createAndShowGui() {
      ToggleArray mainPanel = new ToggleArray();

      JFrame frame = new JFrame("ToggleArray");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.*;
公共类Toggleray扩展了JPanel{
专用静态最终内部侧=5;
公共服装{
ActionListener=新建ActionListener(){
已执行的公共无效操作(操作事件e){
System.out.println(“选择的按钮:+e.getActionCommand());
}
};
setLayout(新网格布局(侧边、侧边));
ButtonGroup btnGroup=新建ButtonGroup();
对于(int i=0;i
这看起来像:

您可以尝试更改背景颜色:

boolean jButton1clicked = false;

jButton1.addActionListener(new ActionListener(){
  @Override
  public void actionPerformed(ActionEvent e) {
      jButton1selected = !jButton1selected;
  }
);

jButton1.setBackgroundColor(jButton1clicked ? Color.green : Color.red);

+1不是关于JToggleButton,而是关于ButtongGroup这对某些外观实现没有明显影响。