【发布时间】:2016-03-17 13:13:42
【问题描述】:
我目前正在开发一些摇摆应用程序。
当我尝试让JButton 只显示它的图标时,它开始了
重叠两个 JButton 图标。
有没有人知道是什么原因造成的(我有一个图标
上面写着'yes',第二个写着'no',
如果我将鼠标移到一个按钮上(假设它是“是”按钮)并且
然后在另一个上做(在这种情况下是“否”按钮)
'yes' 被画在 'no' 上。
注意:在注释标记的代码中添加了解决方案
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class RunnerTestButtons {
public static void main(String[] args) {
JFrame frame =new JFrame("Game");
JPanel panel =new JPanel();
panel.setLayout(new GridLayout(2, 1));
frame.setPreferredSize(new Dimension(640, 480));
panel.setBackground(new Color(0, 255, 0));
JLabel label =new JLabel("SomeText",SwingConstants.CENTER);
//here
label.setOpaque(false);
JPanel panel2 =new JPanel();
//and here
panel2.setOpaque(false);
panel.add(label);
panel.add(panel2);
panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS));
JButton lab1=new JButton("txt");
JButton lab2=new JButton("Boo");
lab1.setAlignmentX(Box.CENTER_ALIGNMENT);
lab2.setAlignmentX(Box.CENTER_ALIGNMENT);
lab1.revalidate();
lab2.revalidate();
lab1.repaint();
lab2.repaint();
panel2.add(Box.createHorizontalGlue());
panel2.add(lab1);
panel2.add(Box.createHorizontalGlue());
panel2.add(lab2);
panel2.add(Box.createHorizontalGlue());
lab1.setOpaque(false);
lab2.setOpaque(false);
lab1.setContentAreaFilled(false);
lab2.setContentAreaFilled(false);
lab1.setBorderPainted(false);
lab2.setBorderPainted(false);
lab1.setBorder(null);
lab2.setBorder(null);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
【问题讨论】:
-
你能把你尝试过的代码贴在这里吗?
-
肯定会在一秒钟内编辑。
-
@vishalgajera:编辑帖子时,请使用
>仅突出显示引用的文本。请不要用它来突出OP的原话。 -
@JakubRogacz 请发布鼠标悬停事件的代码
-
发布正确的SSCCE 来说明问题。您发布的代码与问题无关。