java - JButton 仅在我将鼠标悬停在其上后才出现?

标签 java swing jpanel jbutton gridbaglayout

我想知道为什么我的按钮在我将鼠标悬停在其所在位置之后才显示在面板上?如果我调整窗口大小,它也会再次消失。 MainMenuScreen 只是我用作背景图像的图像。

    //MainMenu setup
    JPanel card2 = new JPanel();
    card2.setLayout(new GridBagLayout());       
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.insets = new Insets(2,2,2,2);
    gbc.anchor = GridBagConstraints.CENTER;
    MainMenuScreen mms = new MainMenuScreen();
    mms.setLayout(new FlowLayout());
    card2.add(mms);
    card2.add(menuButton1, gbc);

这是我如何通过背景图像进行设置。

public class MainMenuScreen extends JPanel{
    private static final long serialVersionUID = 1L;

    private BufferedImage background;

    public MainMenuScreen() {
        try {
            background = ImageIO.read(new File("M&M Arcade.png"));          
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(800, 600);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (background != null) {
            int x = (getWidth() - background.getWidth());
            int y = (getHeight() - background.getHeight());
            g.drawImage(background, x, y, this);
        }

        Graphics2D g2d = (Graphics2D) g;
        g2d.setPaint(Color.white);
    }
}

最佳答案

JButton 不会显示,因为您对 MainMenuScreen 组件和 JButton< 使用相同的 GridBagConstraints menuButton1,即它们存在于同一位置。一旦调整了gbc的值,就会出现该按钮。最好始终使用 add 的正确重载方法。使用 GridBagLayout 添加到容器时。

编辑:

关于如何在 JPanel 容器上实现背景图像已经有很多讨论。值得注意的是 Background Panel .

关于java - JButton 仅在我将鼠标悬停在其上后才出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452150/

相关文章:

java - 对AdjustmentListener的递归调用 - StackOverFlow Error Swing Java

java - 如何将面板拆分为子面板?

java - 添加到列表抛出的前面?

java - 安卓蓝牙配对: How to make sure to get bluetooth pairing request in the front dialog instead of a notification?

java - java中是否提供了任何钩子(Hook)来注册具有垃圾收集的线程?

java - 在 swing 中单击按钮时显示 JfreeChart

java - 如何使用 Java API 获取 CLIPS 事实的字段数据?

java - 单击鼠标时更新 JTable?

java - 如何使 java JPanel 和 graphics2d 透明?

Java GridBagLayout