java里怎样使背景图片适应窗口大小?
importjava.awt.*;importjavax.swing.*;publicclassMain_window_testextendsJFrame{JPanelj...
import java.awt.*;
import javax.swing.*;
public class Main_window_test extends JFrame {
JPanel jp1=null,jp2=null;
public static void main(String[] args)
{
new Main_window_test();
}
public Main_window_test()
{
ImageIcon image = new ImageIcon("image\\notebook.gif");//这是背景图片
JLabel imgLabel = new JLabel(image);//将背景图放在"标签"里。
imgLabel.setBounds(0,0,image.getIconWidth(), image.getIconHeight());//设置背景标签的位置
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
Container cp=this.getContentPane();
((JPanel)cp).setOpaque(false); //注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width/2-200, height/2-150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.setResizable(false);
this.setVisible(true);
}
}
这是我窗口显示图片的代码,我的原始图片比较大,可所需的窗口界面挺小的,我要设置的这个窗口也是固定的不改变大小的,要怎么实现呢?谢谢! 展开
import javax.swing.*;
public class Main_window_test extends JFrame {
JPanel jp1=null,jp2=null;
public static void main(String[] args)
{
new Main_window_test();
}
public Main_window_test()
{
ImageIcon image = new ImageIcon("image\\notebook.gif");//这是背景图片
JLabel imgLabel = new JLabel(image);//将背景图放在"标签"里。
imgLabel.setBounds(0,0,image.getIconWidth(), image.getIconHeight());//设置背景标签的位置
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
Container cp=this.getContentPane();
((JPanel)cp).setOpaque(false); //注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width/2-200, height/2-150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.setResizable(false);
this.setVisible(true);
}
}
这是我窗口显示图片的代码,我的原始图片比较大,可所需的窗口界面挺小的,我要设置的这个窗口也是固定的不改变大小的,要怎么实现呢?谢谢! 展开
2个回答
展开全部
import java.awt.*;
import javax.swing.*;
public class Main_window_test extends JFrame
{
JPanel jp1 = null, jp2 = null;
public static void main(String[] args)
{
new Main_window_test();
}
public Main_window_test()
{
Image image = new ImageIcon("image\\notebook.gif").getImage();// 这是背景图片
JLabel imgLabel = new aLabel(image);// 将背景图放在"标签"里。
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));// 注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
Container cp = this.getContentPane();
((JPanel) cp).setOpaque(false); // 注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width / 2 - 200, height / 2 - 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setResizable(false);
this.setVisible(true);
imgLabel.setBounds(0, 0, this.getWidth(),this.getHeight());// 设置背景标签的位置
}
//内部类
private class aLabel extends JLabel
{
private Image image;
public aLabel(Image image)
{
this.image = image;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int x = this.getWidth();
int y = this.getHeight();
g.drawImage(image, 0, 0, x, y, null);
}
}
}
要实现全部画出来,需要用到drawimage()方法,最好的办法就是重新写一个JLabel类
import javax.swing.*;
public class Main_window_test extends JFrame
{
JPanel jp1 = null, jp2 = null;
public static void main(String[] args)
{
new Main_window_test();
}
public Main_window_test()
{
Image image = new ImageIcon("image\\notebook.gif").getImage();// 这是背景图片
JLabel imgLabel = new aLabel(image);// 将背景图放在"标签"里。
this.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));// 注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
Container cp = this.getContentPane();
((JPanel) cp).setOpaque(false); // 注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width / 2 - 200, height / 2 - 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setResizable(false);
this.setVisible(true);
imgLabel.setBounds(0, 0, this.getWidth(),this.getHeight());// 设置背景标签的位置
}
//内部类
private class aLabel extends JLabel
{
private Image image;
public aLabel(Image image)
{
this.image = image;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int x = this.getWidth();
int y = this.getHeight();
g.drawImage(image, 0, 0, x, y, null);
}
}
}
要实现全部画出来,需要用到drawimage()方法,最好的办法就是重新写一个JLabel类
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询