Java - 如何在另一个操作到位的情况下每X秒显示一次JLabel文本更新

时间:2014-08-07 19:04:21

标签: java image swing jlabel thread-sleep

很抱歉,如果代码不整齐。但无论如何,我是一个混乱的代码编写者O-O。我需要知道为什么当我这样做时,JLabel文本不会弹出。我怎样才能让文字弹出你。

Frame.java

package rpg.tec;

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

public class Frame extends JFrame {

    private static final long serialVersionUID = 1L;
    //Speed of car
    int speed = 3;        
    ImageIcon image = new ImageIcon("C:\\Users\\elliotbewey\\Desktop\\DarkArcaneIMGS\\download.png");
    JLabel location = new JLabel("Hello");
    JLabel imageLabel = new JLabel(image); 

    public void run() {       
        setLayout(null);
        imageLabel.setBounds(10, 10, 400, 400);
        imageLabel.setVisible(true);
        imageLabel.setLayout(null);
        location.setVisible(true);
        location.setText("Hello");
        add(imageLabel);
        add(location);        
        int loc = 1;        
        for(int i = 0; i< 500; i++) {           
            try {
                //sending the actual Thread of execution to sleep X milliseconds
                Thread.sleep(50);
            } catch(InterruptedException ie) {}            
            loc = loc + speed;            
            imageLabel.setLocation(loc, 0);
            location.setLocation(2, 10);
            add(location);
        }
    }

    void messy() {          
    }
}

Main.java

package rpg.main;

import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import rpg.tec.Frame;

public class Main {

    public static void main(String[] args) {
        Frame frame = new Frame();
        String Version = "0.0.1";
        frame.setTitle(Version);
        frame.setVisible(true);
        frame.setSize(600, 450);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.run();
    }
}

没有错误发生

结果是什么,没有错误。只是没有文字显示我们在屏幕上有一辆移动的汽车,但没有文字。我该如何解决?如何使文本显示(JLabel)你好?

1 个答案:

答案 0 :(得分:0)

首先,你为什么要:

location.setLocation(2, 10);
add(location);
在你的for循环中?没有值正在改变。 (除非你还在努力)

其次,您需要为JLabel设置setBounds以使其显示。我只是说:

location.setBounds(100,100,100,100);

它出现了。

如果您更改

location.setLocation(2, 10);

在第一部分

location.setLocation(loc, 10);

JLabel会搬家。