我有三个文件,这里是主要的一个,标题为 Display.java:
import java.awt.*;
import javax.swing.*;
public class Display{
static JFrame main = new JFrame("hello");
static Container c = main.getContentPane();
static StartScreen start = new StartScreen();
static screenTracker track = new screenTracker();
public static void main(String[] args) {
main.setSize(new Dimension(1920,1080));
main.setVisible(true);
if(track.screen==1) {
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.add(start, BorderLayout.CENTER);
}
}
}
我的第二个文件的标题是:StartScreen.java。它包含我的绘画功能:
import java.applet.Applet;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class StartScreen extends Applet{
private static final long serialVersionUID = 1L;
int x = 0;
static Container c = Display.c;
static Color gray = new Color(128,128,128);
public void paint(Graphics g) {
Thread t = new Thread() {
@Override
public void run() {
while(true) {
c.setBackground(gray);
g.clearRect( 0 , 0 , getWidth() , getHeight() );
BufferedImage img1 = null;
BufferedImage img2 = null;
BufferedImage img3 = null;
try {
img1 = ImageIO.read(new File("images/img1.png"));
img2 = ImageIO.read(new File("images/img2.png"));
img3 = ImageIO.read(new File("images/img3.png"));
}
catch(IOException e) {
g.drawString("bad", 200, 200);
}
现在我只希望 StartScreen.java 中的绘制函数显示在我的 JFrame 上。我希望你好在屏幕上移动。我做了线程 t 以便屏幕可以关闭。如果我摆脱了线程 t,或者在 Display.java 中创建它(在 if 语句中,在我设置默认关闭操作并将启动屏幕添加到容器 c 的位置)程序绘制我想要的东西,但 Jframe 赢了不关闭。我查看了很多其他网站和问题,但我无法弄清楚这一点。我是 Java 多线程和图形的新手,
智慧大石
慕运维8079593
相关分类