0

因此,我有一个 gui,其中布局设置为 Null,并且我将 JLabels 放在 JButtons 之上,因为 JButtons 具有图标并且向按钮添加文本会使按钮看起来失真,所以我在 JButtons 之上使用 JLabels。当我测试它时,每次鼠标经过 JButton 时,JLabel 都会消失。我该如何解决这个问题,所以 JLabels 总是出现在 JButtons 上方。

编辑:它扭曲了按钮,因此图标占据了大部分空间,并且按钮标签被按钮的相对边缘切断。

4

2 回答 2

3

如果您使用的是 JFrame,我假设您必须这样做,您可以将标签添加到位于内容窗格顶部的 JLayered 窗格。

于 2012-03-29T06:53:20.340 回答
1

几乎没有情况需要使用空布局。你只需要对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;
    }
}

我认为这不是一个好的解决方案。只有在没有更好的解决方案时才这样做。

于 2012-03-29T08:00:59.083 回答