Java 添加ImageIcon时,如何防止JRadioButton出现气泡?

Java 添加ImageIcon时,如何防止JRadioButton出现气泡?,java,swing,imageicon,jradiobutton,Java,Swing,Imageicon,Jradiobutton,我正在改进使用swing创建的石头、布、剪刀程序,现在我为每个JRadioButton添加图像图标。我输入并添加了岩石,但我似乎找不到保持泡沫的方法 它显示在文本旁边。当我添加图标时,我得到了这个 有什么建议吗?谢谢 创建一个自定义图标供选择(可以为当前图标添加边框)。然后您可以按如下所示设置选择图标 JRadioButton radio = new JRadioButton(new ImageIcon("Resources/nonSelect.png")); radio.setSelect

我正在改进使用swing创建的石头、布、剪刀程序,现在我为每个JRadioButton添加图像图标。我输入并添加了岩石,但我似乎找不到保持泡沫的方法

它显示在文本旁边。当我添加图标时,我得到了这个


有什么建议吗?谢谢

创建一个自定义图标供选择(可以为当前图标添加边框)。然后您可以按如下所示设置选择图标

JRadioButton radio = new JRadioButton(new ImageIcon("Resources/nonSelect.png"));
radio.setSelectedIcon(new ImageIcon("Resources/selected.png"));
此外,还可以设置滚动图标

radio.setRolloverIcon(new ImageIcon("Resources/rollover.png"));
“添加ImageIcon时,如何防止JRadioButton出现气泡?”

也许你可以将图标和RBs组合成单独的面板

  • 为每个石头、布和剪刀创建面板
  • 将单选按钮和图像标签添加到面板
  • 将这些面板添加到另一个面板以容纳所有三个面板
像这样的

JRadioButton rock = new JRadioButton("Rock");
JRadioButton paper = new JRadioButton("Paper");
JRadioButton scissors = new JRadioButton("Scissors");

ButtonGroup bg = new ButtonGroup();
bg.add(rock);
bg.add(paper);
bg.add(scissors);

JPanel rockPanel = new JPanel();                         <-- Rock panel
rockPanel.add(rock);                                     <-- Rock RB
rockPanel.add(new JLabel(new ImageIcon("rock.png"));     <-- Rock Icon

JPanel paperPanel = new JPanel();                        <-- Paper Panel
rockPanel.add(paper);                                    <-- Paper RB
rockPanel.add(new JLabel(new ImageIcon("paper.png"));    <-- Paper Icon

JPanel scissorsPanel = new JPanel();                     <-- Scissors Panel
rockPanel.add(scissors);                                 <-- Scissors RB
rockPanel.add(new JLabel(new ImageIcon("scissors.png")); <-- Scissors Icon

JPanel holdThreePanel = new JPanel(new GridLayout(3, 1));
holdThreePanel.add(rockPanel);                           <-- Rock Panel
holdThreePanel.add(paperPanel);                          <-- Paper Panel
holdThreePanel.add(scissorsPanel);                       <-- Scissors Panel
        holdThreePanel
--------------------------------
|  O  Rock     [rock icon]     |
|  O  Paper    [paper icon]    |
|  O  Scissors [scissors icon] |
+------------------------------+

如果不需要文本,请不要将任何文本设置为单选按钮<代码>JRadioButton rock=新单选按钮()

谢谢,我没有足够的声誉来做这件事@Rockyyes我知道这就是为什么我帮助您编辑使用BorderLayout在一个JPanel上使用JRadioButton和JLabel组合。将图标添加到JLabel,而不是JRadioButton。@ZeroConnor显然他没有。删除了他的评论后realization@HovercraftFullOfEels它起作用了!谢谢