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