编程语言
首页 > 编程语言> > java – JButton()仅在鼠标悬停时工作

java – JButton()仅在鼠标悬停时工作

作者:互联网

    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import javax.imageio.*;
    import java.lang.*;
    import java.io.*;
    import javax.swing.*;
    public class MainClass extends Component{
       private Image bg;
       private ImageIcon newgame;
       private ImageIcon quit;
       private ImageIcon options;
       private JButton bquit;
       private JButton boptions;
       private JButton bnewgame;
       private static Container pane; //Container

    public void loadImage() {
        try {
            bg=ImageIO.read(new File("bg1.png"));
        } catch (Exception e) {
        }
        if(bg!=null)
            repaint();

    }
    public void paint(Graphics g) {
        g.drawImage(bg,0,0,null);
    }
    public void imageButtons(JFrame f) {
        try {
            quit= new ImageIcon("quit.png");
            options=new ImageIcon("options.png");
            newgame= new ImageIcon("newgame.png");
        }catch(Exception e){}    
        bnewgame= new JButton(newgame);
        boptions= new JButton(options);
        bquit= new JButton(quit);
        bnewgame.setBounds(150,100,400,89);
        boptions.setBounds(150,200,400,89);
        bquit.setBounds(150,300,400,89);
        pane.add(bquit);
        pane.add(boptions);
        pane.add(bnewgame);
    }   


    public static void main(String args[]) {

        MainClass o=new MainClass();    
        FullScreen fs=new FullScreen(); 
        JFrame f1=new JFrame("TITLE");
        pane=f1.getContentPane();
        fs.fullScreenIt(f1);
        pane.add(o);
        f1.setVisible(true);
        o.loadImage();
        o.imageButtons(f1);
    }
}

全屏是另一个提供全屏帧的类.
JButton上有ImageIcon. bg1.png是背景图片
  问题是这些JButton只有在鼠标悬停时才会显示,否则它们不会出现.

解决方法:

你可能有一个布局问题,你试图将带有绝对边界的JButton添加到一个使用非空布局管理器的容器中.建议

>不要使用setBounds和绝对定位来调整组件的大小和位置.
>阅读并使用布局管理器为您完成这项繁重工作:Lesson: Laying Out Components Within a Container
>添加所有组件后,不要忘记在JFrame上调用pack()
>调用pack()后调用setVisible(true),并在将所有组件添加到GUI后再次调用它们.
>如果您绝对需要使用组件的绝对定位,则可以使用null布局,但无论如何,您应该努力避免使用它.

标签:null-layout-manager,java,swing,mouseevent,jbutton
来源: https://codeday.me/bug/20190917/1809508.html