李小燚 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);
        }
    

    网上找到的
    自己测试过

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!