我试着用Java写一个包含图像的标签每秒钟都在移动的程序,但不幸的是代码没有运行,尽管它包含零错误。有没有人知道发生了什么。代码如下:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class what extends JFrame {
private JPanel panel;
private Random r= new Random();
private JLabel image;
private Random s = new Random();
public what (){
super("Catch him!");
panel = new JPanel();
Icon b = new ImageIcon(getClass().getResource("img.JPG"));
image = new JLabel(b);
panel.add(image);
add(panel,BorderLayout.CENTER);
panel.setBackground(Color.yellow);
panel.add(image);
while(true){
int x = s.nextInt(1000);
int y = s.nextInt(900);
try{
Thread.sleep(1000);
}catch(Exception e){
}
image.setBounds(x, y,200, 200);
}
}
public static void main(String[] args){
what c = new what();
c.setVisible(true);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
c.setSize(1920,1080);
}
}
拜托,有谁能帮我。
您正在单线程中执行无限循环。创建new what();
时,循环将开始,并且永不结束。因此,永远无法访问c.setVisible(true);
。
您需要为要运行的循环创建一个单独的线程。您可以创建以下类;
public class Infout implements Runnable{
private JFrame frame;
private JLabel image;
private Random s = new Random();
public Infout(JFrame frame, JLabel image){
this.frame = frame;
this.image = image;
}
@Override
public void run() {
while(true){
int x = s.nextInt(1000);
int y = s.nextInt(900);
try{ Thread.sleep(1000); }
catch(InterruptedException e){ }
image.setBounds(x, y, 200, 200);
}
}
}
然后实例化并在您的main方法中运行,如下所示;
Infout inf = new Infout(c, image);
new Thread(inf).start();
我希望这会有所帮助:)
问题内容: 我想制作一个可以测量光标到组件中心的距离,然后将光标移回中心的应用程序(就像大多数PC视频游戏一样)。有没有人有什么建议? 问题答案: 机器人课可以帮您解决问题。以下是用于移动鼠标光标的示例代码:
问题内容: 我希望简单的动画每0.5秒设置一次位置,但它不会仅在循环结束时设置动画。 int x = 1; int y = 1; 我已经尝试过使用thread.sleep()绘制动画,并且可以正常工作,但动画确实正确,但不幸的是,这对我来说不是一个选择,因为我需要在框架内移动jlabel并在其中放置图形图片。有人可以帮助我解决这个问题。 我已经尝试过这两个相同的结果 问题答案: 与其使用Java
问题内容: 我做了一个绘制椭圆并相互链接的迷你代码,现在我尝试移动椭圆(圆),但是我在编码时遇到了问题 移动两个圆圈,并且直线一定不能移动(Graph节点),请帮帮我,谢谢:)更新后(感谢MadProgrammer),现在我可以移动所有 图形了 问题答案: 基本上,因为可以使用而不是使用 这将确保整个组件被重新粉刷。 虽然我不反对使用repaint(int, int),因为您的绘画过程相对简单,但
4/26约的下午三点半面试,等了差不多十五分钟左右吧 面试官人挺好的,中间由于紧张说的十分混乱还说没关系,问题也没有特别难的都是常见八股 1、final的用法,能不能修饰抽象类呢 2、array list和linklist区别 3、引用类型和值类型的区别 4、如何确保array list的线程安全(这个我不会,说了自己加锁来确保线程安全。) 5、并发和并行区别 6、MySQL建立索引需要考虑那些地
问题内容: 更新到OS X 10.11后,我的Java停止工作。我读了多个应该做的地方: 但是问题是当我运行第一行代码时,我得到的是: 有什么想法可以解决吗? 问题答案: 好像新的OS X引入了新的系统集成保护(又名无根)一样。 您可以尝试通过以下步骤在恢复模式下禁用无根用户: 进入恢复模式(听到启动音后同时重新启动并按住+ 键) 当出现“ OS X Utilities”屏幕时,请下拉屏幕顶部的“
但问题是,当我运行第一行代码时,我得到的只是: 你知道我能做些什么来解决这个问题吗?