java界面的背景图片怎么加,如果把图片加在JLabel上填满面板那怎么样才能再加button?
不能直接把图片加在JPANEL上么,我加了eclipse老说我没定义,还有最大化的时候怎么使背景图片也跟着变大?不好意思,没积分了==...
不能直接把图片加在JPANEL上么,我加了eclipse老说我没定义,还有最大化的时候怎么使背景图片也跟着变大?不好意思,没积分了= =
展开
展开全部
不知道你怎么加的。加背景图有很多种办法:
- 加一个 JLabel,然后在 JLabel 上添加图片;
- 直接重写 paint 方法,然后用 drawImage(Image src, int x, int y, int width, int height) 方法画上去。
最大化的时候实际上是触发了窗口事件,添加窗口监听器,然后重写 windowResized() 方法,一旦窗口改变大小就重新计算尺寸,并调用 repaint 方法重绘。
================================= 给你一个例子 =================================
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.event.WindowEvent;
class BackgroundPanel extends JPanel {
private Toolkit tk = Toolkit.getDefaultToolkit();
private Image backgroundImage;
private JButton btnExit = new JButton("Exit");
public BackgroundPanel (String imgFile) {
backgroundImage = tk.createImage(imgFile);
setLayout(null);
btnExit.setBounds(10, 10, 100, 25);
add(btnExit);
}
@Override public void paint (Graphics g) {
g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
paintComponents(g);
}
}
class DemoFrame extends JFrame {
public DemoFrame () {
super("Demo");
String fileName = null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("请选择一张背景图片");
fileChooser.setFileFilter(new FileNameExtensionFilter("图片文件(*.bmp, *.gif, *.jpg, *.jpeg, *.png)", "bmp", "gif", "jpg", "jpeg", "png"));
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
fileName = fileChooser.getSelectedFile().getAbsolutePath();
if (fileName == null)
return;
} else
return;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setContentPane(new BackgroundPanel(fileName));
setVisible(true);
}
}
public class Demo {
public static void main (String args[]) {
new DemoFrame();
}
}
- 加一个 JLabel,然后在 JLabel 上添加图片;
- 直接重写 paint 方法,然后用 drawImage(Image src, int x, int y, int width, int height) 方法画上去。
最大化的时候实际上是触发了窗口事件,添加窗口监听器,然后重写 windowResized() 方法,一旦窗口改变大小就重新计算尺寸,并调用 repaint 方法重绘。
================================= 给你一个例子 =================================
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.event.WindowEvent;
class BackgroundPanel extends JPanel {
private Toolkit tk = Toolkit.getDefaultToolkit();
private Image backgroundImage;
private JButton btnExit = new JButton("Exit");
public BackgroundPanel (String imgFile) {
backgroundImage = tk.createImage(imgFile);
setLayout(null);
btnExit.setBounds(10, 10, 100, 25);
add(btnExit);
}
@Override public void paint (Graphics g) {
g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
paintComponents(g);
}
}
class DemoFrame extends JFrame {
public DemoFrame () {
super("Demo");
String fileName = null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("请选择一张背景图片");
fileChooser.setFileFilter(new FileNameExtensionFilter("图片文件(*.bmp, *.gif, *.jpg, *.jpeg, *.png)", "bmp", "gif", "jpg", "jpeg", "png"));
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
fileName = fileChooser.getSelectedFile().getAbsolutePath();
if (fileName == null)
return;
} else
return;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setContentPane(new BackgroundPanel(fileName));
setVisible(true);
}
}
public class Demo {
public static void main (String args[]) {
new DemoFrame();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询