所以我读到运行函数从Runnable接口被自动调用,但它不为我工作(运行不被调用)。这是我第一次用java做任何事情,所以我可能做了一些愚蠢的事情。下面的代码应该在屏幕上移动一个矩形。矩形被绘制,但它没有移动。
主要内容:
public class Label extends JLabel{
Game game;
public Label(Game game){
this.game = game;
}
public void paint(Graphics gfx){
game.render(gfx);
}
}
Frmae:
import javax.swing.*;
import java.awt.*;
public class Frame extends JFrame implements Runnable{
Game game;
public Frame(Label label, Game game) {
this.setSize(600, 600);
this.setTitle("idk");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setEnabled(true);
this.game = game;
this.setContentPane(label);
}
public void run(){
game.update();
try {
Thread.sleep(20);
}
catch(InterruptedException ex){}
}
}
标签:
import javax.swing.*;
import java.awt.*;
public class Label extends JLabel{
Game game;
public Label(Game game){
this.game = game;
}
public void paint(Graphics gfx){
game.render(gfx);
}
}
游戏:
import java.awt.*;
public class Game {
float x = 0;
float y = 0;
float w = 20;
float h = 20;
void render(Graphics gfx){
gfx.fillRect((int)x, (int)y, (int)w, (int)h);
}
void update(){
x += 0.1f;
System.out.println(x);
}
}
您需要创建一个main
方法,在其中您创建一个新的Thread
对象,在该Thread
实例中传递Runnable类(即,在您的情况下,Frame
),并随后start
的线程
。见下文:
public class Main
{
public static void main(String args[])
{
Game g = new Game();
Label l = new Label(g);
Frame f = new Frame(l, g);
Thread t1 =new Thread(f);
// this will call run() method in Frame class
t1.start();
}
}
编辑:另外,您的框架类应该如下所示。一个线程执行它的run方法一次,然后它就被认为完成了。如果你想循环,你必须自己做(在下面,使用(true)
时,可以将其更改为某个变量,当你想退出程序时,可以将该变量设置为false
)。最后,确保在游戏之后调用
,使图形生效。repaint()
。更新()
import javax.swing.*;
import java.awt.*;
public class Frame extends JFrame implements Runnable{
Game game;
Label label;
public Frame(Label label, Game game) {
this.label = label;
this.setSize(600, 600);
this.setTitle("idk");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setEnabled(true);
this.game = game;
this.setContentPane(label);
}
@Override
public void run(){
while(true) {
game.update();
label.repaint();
try {
Thread.sleep(5);
}
catch(InterruptedException ex){}
}
}
}
问题内容: 当我尝试在Python 3.3中运行该代码时,该代码不执行任何操作。没有错误或任何东西。怎么了 问题答案: 您仍然必须 调用 该函数。
我有一个叫做srxCOM的dll。用于titan FTP的dll,此dll是为VB6制作的。我想在Visual Studio中使用dll。NET,所以我使用tblimp创建了一个运行时可调用的包装器,并将其命名为srxCOMnet。dll。我在VS项目中添加了dll作为参考,可以访问其中的函数。在创建项目时,我遇到了这个错误, 错误:CLSID{A82C6CF0-7B42-4ABD-AECB-98
我已经使用这个链接在ubuntu服务器上设置了kubenertes。 其他应用程序与NodePort配合得很好,不管是Tomcat/Nginx/Databases。 但在这里,它在创建容器方面失败了。
尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出 在这种情况下我该怎么办?
但是,当我检查它们是否运行(查看日志)时,它们不在monitor选项卡()、kudu日志流中,也不在general function视图中: 信息: 使用计时器触发的Azure函数v2调用: 持久函数(但“普通”v2函数不起作用) 使用TFS将代码部署到ARM生成的资源 我有: 删除了Azure门户中的函数 已重命名函数 删除了该函数的blob存储“Azure-Webjobs-hosts”和持久租
我有一个简单的Java项目,它有一个文件输入。Java语言输入代码。java是这样的- 现在,我已经通过导出在Eclipse中创建了一个可执行的jar文件- 现在,当我尝试通过命令提示符打开它时,它工作得非常好。 但是,当我双击runnable jar文件时,我希望打开命令提示符。这里有什么问题? 谢谢