李小燚 2018-11-19 00:30 采纳率: 0%
浏览 1296

Java如何用JLabel setText()方法显示图片?

我的思路是:
1:JLabel中setText()方法
jl.setText("");

不显示图片,只有把完整的本地路径写上去才能显示。可是这样一换电脑不就不行了吗?
求大佬解释!

这是我的文件位置
图片说明

package seshe;

import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.net.URL;

import javax.swing.JFrame;
import javax.swing.JLabel;

class DivMove {
static JLabel jl = new JLabel();
static JFrame jf = new JFrame();
static Thread keymove = new EventTest(jf, jl);
private static int x, y;

public static void main(String[] args) {



    jf.setSize(400, 400);
    Container con = jf.getContentPane();
    con.setLayout(null);

    jl.setSize(40, 60);
    jl.setText("<html><img style=\"width:" + jl.getWidth() + "px;height:"+ 
            jl.getHeight() + "px;\" src='file:///:./vehicle.png'/></html>");
    con.add(jl);
    jf.setUndecorated(false);
    jf.setVisible(true);

    keymove.start();


}

}

class EventTest extends Thread {

private static JFrame jf;
private static JLabel jl;
private static boolean left = false, right = false, top = false,
        bottom = false;


public EventTest(JFrame jf, JLabel jl) {
    // TODO Auto-generated constructor stub
    EventTest.jf = jf;
    EventTest.jl = jl;
}

@Override
public void run() {
    // TODO Auto-generated method stub

    moveAction();
    while (true) {
        move();
        try {
            super.sleep(20);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

private void move() {
    if (left && (jl.getX() - 5) > 0)
        jl.setLocation(jl.getX() - 5, jl.getY());
    if (top && (jl.getY() - 5) > 0)
        jl.setLocation(jl.getX(), jl.getY() - 5);
    if (right && (jl.getX() + 5) < (jf.getWidth() - jl.getWidth()))
        jl.setLocation(jl.getX() + 5, jl.getY());
    if (bottom && (jl.getY() + 5) < (jf.getHeight() - jl.getHeight()))
        jl.setLocation(jl.getX(), jl.getY() + 5);
}

private void moveAction() {

    jf.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent arg0) {
        }

        @Override
        public void keyReleased(KeyEvent arg0) {
            // TODO Auto-generated method stub
            switch (arg0.getKeyCode()) {
            case 65:
            case 37:
                left = false;
                break;
            case 87:
            case 38:
                top = false;
                break;
            case 68:
            case 39:
                right = false;
                break;
            case 83:
            case 40:
                bottom = false;
                break;
            default:
                break;
            }
        }

        @Override
        public void keyPressed(KeyEvent arg0) {
            // TODO Auto-generated method stub
            switch (arg0.getKeyCode()) {
            case 65:
            case 37:
                left = true;
                break;
            case 87:
            case 38:
                top = true;
                break;
            case 68:
            case 39:
                right = true;
                break;
            case 83:
            case 40:
                bottom = true;
                break;
            default:
                break;
            }

            if (arg0.getKeyCode() == 27)
                System.exit(0);
        }

        });

    }

}

  • 写回答

1条回答 默认 最新

  • wlq199101 2018-11-19 01:28
    关注
     public static void main(String[] args) {
            JFrame frame=new JFrame("Crystal");
            String path="d:\\test5.jpg";
            Icon icon=new ImageIcon(path);
            JLabel label=null;
            label=new JLabel(icon, JLabel.CENTER);
            label.setForeground(Color.RED);
            label.setBackground(Color.YELLOW);
            frame.add(label);
            frame.setSize(300,160);
            frame.setBackground(Color.white);
            frame.setLocation(300,200);
            frame.setVisible(true);
        }
    

    网上找到的
    自己测试过

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办