java JButton 中只有一个显示 其余的只有鼠标移过才会显示

qq_32185937 2018-04-11 03:29:20
public class MyJFrame extends JFrame {
//创建一个容器
Container ct;
//创建背景面板。
BackgroundPanel bgp; //自定义的背景类

//创建一个按钮,用来证明我们的确是创建了背景图片,而不是一张图片。
JButton jb1;
JButton jb2;
JButton jb3;
JButton jb4;
JLabel jl1;
JLabel jl2;
JLabel jl3;
JLabel jl4;

public MyJFrame()
{
//不采用任何布局方式。
setTitle("欢迎来到主菜单");
ct=this.getContentPane();
this.setLayout(null);

//重新绘制背景图片
init1();

this.setSize(800,600);
this.setLocation(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
//设置窗体的图标
Image img0 = new ImageIcon("E:/biaoti.png").getImage();
this.setIconImage(img0);
//窗体大小不能改变
this.setResizable(false);

this.setVisible(true);
}

public void init1(){

bgp=new BackgroundPanel((new ImageIcon("e:beijing2"
+ ".jpg")).getImage()); //参数是一个Image对象,
bgp.setBounds(0,0,800,600);

//创建按钮
ImageIcon ii=new ImageIcon("e:xianshi.png");
jb1=new JButton(ii);
jb1.setBounds(60,30,150,150);
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

new MyJFrame1();
}

});
//ct.add(jb1);
jl1=new JLabel("状态显示");
jl1.setBounds(95, 180, 95, 45);
jl1.setFont(new java.awt.Font("TimesRoman", 1, 20));
// “dialog”代表字体,1代表样式(1是粗体,0是平常的)15是字号
//设置字体
jl1.setForeground(Color.white);
ct.add(jl1);


ImageIcon iii=new ImageIcon("e:dayin1.png");
jb2=new JButton(iii);
jb2.setBounds(300,30,150,150);

jb2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

new MyJFrame2();
}

});

jl2=new JLabel("历史数据打印");
jl2.setBounds(315, 180, 135, 45);
jl2.setFont(new java.awt.Font("TimesRoman", 1, 20));
// “dialog”代表字体,1代表样式(1是粗体,0是平常的)15是字号
//设置字体
jl2.setForeground(Color.white);
ct.add(jl2);

Image iiii=new ImageIcon("e:kongzhi.png").getImage();
jb3=new JButton();
jb3.setBounds(540,30,150,150);
jb3.setIcon(new ImageIcon(iiii));


jb3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

new MyJFrame3();
}

});
// ct.add(jb3);
jl3=new JLabel("电机控制");
jl3.setBounds(578, 180, 95, 45);

jl3.setFont(new java.awt.Font("TimesRoman", 1, 20));
// “dialog”代表字体,1代表样式(1是粗体,0是平常的)15是字号
//设置字体
jl3.setForeground(Color.white);
ct.add(jl3);


ImageIcon iiiii=new ImageIcon("e:shezhi.png");
jb4=new JButton(iiiii);

jb4.setBounds(60,250,150,150);
jb4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

new MyJFrame4();
}

});
jl4=new JLabel("阈值设置");
jl4.setBounds(95, 400, 95, 45);
jl4.setFont(new java.awt.Font("TimesRoman", 1, 20));
// “dialog”代表字体,1代表样式(1是粗体,0是平常的)15是字号
//设置字体
jl4.setForeground(Color.white);
ct.add(jl4);

ct.add(bgp);

ct.add(jb1);
ct.add(jb2);
ct.add(jb3);
ct.add(jb4);

}



public static void main(String[] args)
{
new MyJFrame();

}
}
class BackgroundPanel extends JPanel
{
Image im;
public BackgroundPanel(Image im)
{
this.im=im;
// this.setOpaque(false); //设置控件不透明,若是false,那么就是透明

}
//Draw the background again,继承自Jpanle,是Swing控件需要继承实现的方法,而不是AWT中的Paint()
public void paintComponent(Graphics g) //绘图类,详情可见博主的Java 下 java-Graphics
{


super.paintComponents(g);
g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this); //绘制指定图像中当前可用的图像。图像的左上角位于该图形上下文坐标空间的 (x, y)。图像中的透明像素不影响该处已存在的像素

}

}
...全文
640 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32185937 2018-04-13
  • 打赏
  • 举报
回复
谢谢 但是 可以说的详细一点吗 我是新手
tianfang 2018-04-13
  • 打赏
  • 举报
回复
原因:setVisible(true);放在添加组件后。 添加组件后立即重绘,repaint(); 还可以 重新布局,添加组件后,调用validate();

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧