Java 如何每秒移动jlabel?
我试着每秒钟将它移到右边的X++上 我试着用线移动它 怎么做?可以看到它每秒钟移动一次 有没有其他不用线程的方法? 我应该使用什么布局管理器? 我试试看Java 如何每秒移动jlabel?,java,multithreading,swing,jlabel,Java,Multithreading,Swing,Jlabel,我试着每秒钟将它移到右边的X++上 我试着用线移动它 怎么做?可以看到它每秒钟移动一次 有没有其他不用线程的方法? 我应该使用什么布局管理器? 我试试看 public class help { JFrame frame = new JFrame(); JLabel label = new JLabel("target"); public help() { frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_C
public class help {
JFrame frame = new JFrame();
JLabel label = new JLabel("target");
public help() {
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(800,600);
frame.setLayout(new GridLayout());
frame.add(label);
label.setPreferredSize(new Dimension(100,100));
label.setLocation(400, 300);
frame.getContentPane().validate();
frame.repaint();
frame.setVisible(true);
mysterious();
}
void mysterious(){
////////////////////////////////
// part of edit responding David kroukamp
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try{
for (int z=0; z<10; z++){
label.setLocation((label.getLocationOnScreen().x+10), label.getLocationOnScreen().y);
Thread.sleep(1000);
}
}catch(Exception ae){
}
}
});
t.start();
//////////////////////////////
}
public static void main(String[]args){
new help();
}
}
非常感谢您提供的任何帮助如果您将构造函数的这一部分放在线程中,那么您可以调用thread.sleep1000;1000毫秒,延迟1秒,然后刷新,这将使目标在屏幕上移动。如果将构造函数的该部分放入线程中,则可以调用thread.sleep1000;1000毫秒,延迟1秒,然后刷新,这将使目标在屏幕上移动 类名以大写字母开头,即帮助 应在上创建和修改Swing组件 将创建一个新线程,如下所示:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
//work here
}
});
t.start();//start thread
但是,我建议在EDT上运行Swing计时器:
编辑:
根据您的问题,我建议使用计时器创建线程点是为了了解一般知识
问题是该线程没有在swing GUI的EDT线程上运行,而计时器会:
参考:
类名以大写字母开头,即帮助
应在上创建和修改Swing组件
将创建一个新线程,如下所示:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
//work here
}
});
t.start();//start thread
但是,我建议在EDT上运行Swing计时器:
编辑:
根据您的问题,我建议使用计时器创建线程点是为了了解一般知识
问题是该线程没有在swing GUI的EDT线程上运行,而计时器会:
参考:
下面是一个简单益智游戏的Swing示例
当您按下暂停按钮时,标题将被设置为动画,直到您释放暂停。同样,您也可以将其用于JLabel。还附上了源代码
希望这能对您有所帮助。这里是一个简单益智游戏的Swing示例
当您按下暂停按钮时,标题将被设置为动画,直到您释放暂停。同样,您也可以将其用于JLabel。还附上了源代码
希望这能帮你很多忙。怎么办?抱歉,我弄不懂。。你能告诉我密码吗?怎么说?抱歉,我弄不懂。。你能给我看看代码吗?^^非常感谢。。它起作用了。。但有件事,你能给我一个提示为什么jlabel的位置y会改变吗?我编辑我的代码。。也许对第三个问题有什么建议?谢谢你的时间。对不起。。它的更改是因为getLocationOnScreen{我不知道为什么}但是如果我用getLocation更改它,它的返回值将为normalthankz。。我喜欢这一部分。。system.out.printlnSwingUtilities.isEventDispatchThread。。谢谢,非常感谢。。它起作用了。。但有件事,你能给我一个提示为什么jlabel的位置y会改变吗?我编辑我的代码。。也许对第三个问题有什么建议?谢谢你的时间。对不起。。它的更改是因为getLocationOnScreen{我不知道为什么}但是如果我用getLocation更改它,它的返回值将为normalthankz。。我喜欢这一部分。。system.out.printlnSwingUtilities.isEventDispatchThread。。thankz@moprmopr:不要忽略向上投票你认为有用的答案。@moprmor:不要忽略向上投票你认为有用的答案。