所以我有一个gui,其中布局设置为Null,我把JLabel放在JButton的顶部,因为JButtons有图标并且向按钮添加文本会使按钮看起来扭曲,所以我在JButtons上使用JLabel 。每当我测试它时鼠标越过JButton,JLabel就会消失。我如何解决这个问题,以便JLabel始终出现在JButtons之上。
编辑:它扭曲了按钮,因此图标占据了大部分空间,按钮标签被按钮的相对边缘切断。
答案 0 :(得分:3)
如果您正在使用JFrame,我认为您必须这样做,您可以将标签添加到位于内容窗格顶部的JLayered窗格。
答案 1 :(得分:1)
几乎没有需要使用null布局的情况。您只需要使用LayoutManagers
进行一些练习您可以使用JLayeredPane执行您想要执行的操作。像这样:
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(jLabelOnJButton());
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static JComponent jLabelOnJButton(){
JLayeredPane layers = new JLayeredPane();
JLabel label = new JLabel("label");
JButton button = new JButton("button");
label.setBounds(40, 20, 100, 50);
button.setBounds(20, 20, 150, 75);
layers.add(label, new Integer(2));
layers.add(button, new Integer(1));
return layers;
}
}
我认为这不是一个好的解决方案。只有在你没有更好的解决方案时才这样做。