在java swing中需要为容器添加图片,或者背景图片。
提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel
1.JPanel(源代码)
- package oo;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.io.File;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class Drawing {
- JFrame jframe = new JFrame();
- public static JPanel GImage = null;
- public Drawing() {
- initFrame();
- }
- // 初始化窗口
- public void initFrame() {
- // 利用JPanel添加背景图片
- GImage = new JPanel() {
- protected void paintComponent(Graphics g) {
- ImageIcon icon = new ImageIcon("image\\benbenla.jpg");
- Image img = icon.getImage();
- g.drawImage(img, 0, 0, icon.getIconWidth(),
- icon.getIconHeight(), icon.getImageObserver());
- jframe.setSize(icon.getIconWidth(), icon.getIconHeight());
- }
- };
- jframe.setTitle("测试背景图片");
- jframe.add(GImage);
- jframe.pack();
- jframe.setVisible(true);
- jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public static void main(String[] args) {
- new Drawing();
- }
- }
2.JLabel源代码
- package swing.draw;
- import java.awt.Image;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- /** 利用JLabel来构建图片 */
- public class Drawing2 {
- JLabel jlpic = new JLabel();
- JFrame jframe = new JFrame();
- public Drawing2() {
- init1Frame();
- }
- public void init1Frame() {
- ImageIcon icon = new ImageIcon("image\\benbenla.jpg");
- icon.setImage(icon.getImage().getScaledInstance(icon.getIconWidth(),
- icon.getIconHeight(), Image.SCALE_DEFAULT));
- System.out.println(icon.getIconHeight() + "" + icon.getIconWidth());
- jlpic.setBounds(0, 0, 1366, 768);
- jlpic.setHorizontalAlignment(0);
- jlpic.setIcon(icon);
- jframe.setSize(1366, 768);
- jframe.add(jlpic);
- jframe.pack();
- jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jframe.setVisible(true);
- }
- public static void main(String args[]) {
- new Drawing2();
- }
- }
添加控件:
jlpic.setIcon(icon); Container c = new Container(); JLabel user = new JLabel("用户:"); JLabel password = new JLabel("密码:"); JTextField txf_userName = new JTextField(); JPasswordField pwd_password = new JPasswordField() { public void paste(){ UIManager.getLookAndFeel().provideErrorFeedback(this); } }; user.setBounds(200,25,50,25); password.setBounds(200,52,50,25); txf_userName.setBounds(300,25,150,25); pwd_password.setBounds(300,52,150,25); c.add(user); c.add(txf_userName); c.add(password); c.add(pwd_password); c.add(jlpic); jframe.setSize(1366, 768); // jframe.add(); jframe.add(c);