为了账号安全,请及时绑定邮箱和手机立即绑定

你好,在java中用paint画背景后,控件不显示,请问怎么改啊?

你好,在java中用paint画背景后,控件不显示,请问怎么改啊?

紫衣仙女 2022-05-26 15:11:36
public class Testio extends JFrame{/*** @throws MalformedURLException*/public static void main(String[] args) throws MalformedURLException {MyJPanel mj=new Testio().new MyJPanel();JFrame jf=new JFrame("image");jf.setContentPane(mj);Container c=jf.getContentPane();jf.setSize(1400, 800);jf.setLocationRelativeTo(null);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);c.setLayout(null);JTextField jl=new JTextField("HAVE A QUESTION");c.add(jl);}class MyJPanel extends JPanel{Image i;public MyJPanel() throws MalformedURLException{URL url=new URL("file:///D:/0.jpg");i=Toolkit.getDefaultToolkit().getImage(url);}public void paint(Graphics g){super.paint(g);Graphics2D g2=(Graphics2D) g;g2.drawImage(i, 0, -30,this);}}}
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

做一个实例给你吧。这样做也可以的。

import java.awt.*;
import javax.swing.*;
public class Test extends JFrame{

JPanel jp=(JPanel)this.getContentPane();
public Test()
{
jp.setLayout(null);
JLabel jl=new JLabel("JLabel");
JButton jb=new JButton("Button");
jl.setBounds(new Rectangle(20,20,80,25));
jb.setBounds(new Rectangle(20,60,80,25));
jp.add(jl);
jp.add(jb);
}
public static void main(String[] args) {
Test frame=new Test();
frame.setResizable(false);
ImageIcon img = new ImageIcon("./images/backimage.jpg");//这是背景图片,注意这里是局部路劲在项目名下面的目录里,比如../项目名/images/...
JLabel imgLabel = new JLabel();//将背景图放在标签里。
imgLabel.setIcon(img);
frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());//设置背景标签的位置
Container cp=frame.getContentPane();
cp.setLayout(new BorderLayout());
((JPanel)cp).setOpaque(false); //注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
frame.setSize(1024,544);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}



查看完整回答
反对 回复 2022-05-30
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

JTextField jl=new JTextField("HAVE A QUESTION");
jl.setLayout(null);
jl.setBounds(0,0, 200, 30);
c.add(jl);
c.repaint();
c是layout等于null。

查看完整回答
反对 回复 2022-05-30
  • 2 回答
  • 0 关注
  • 428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信