沒報錯運行就這樣了
package ui;
import java.awt.Graphics;
import config.ConfigFactory;
import config.GameConfig;
import config.layerConfig;
import jdk.nashorn.internal.runtime.regexp.joni.Config;
import javax.swing.*;
import java.awt.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
public class PanelGame extends JPanel {
private List<Layer> layers = null;
public PanelGame() {
//獲得游戲配置
try {
GameConfig cfg = ConfigFactory.getGameConfig();
//獲得層配置
List<layerConfig> layersCfg = cfg.getLayersConfig();
//創建游戲層陣列
layers = new ArrayList<Layer>(layersCfg.size());
for (layerConfig layerCfg : layersCfg) {
//獲得類物件
Class<?> cls = Class.forName(layerCfg.getClassName());
Constructor<?> ctr = cls.getConstructor(int.class, int.class, int.class, int.class);
Layer l = (Layer) ctr.newInstance(
layerCfg.getX(), layerCfg.getY(), layerCfg.getW(), layerCfg.getH()
);
layers.add(l);
}
} catch (ClassNotFoundException | NoSuchMethodException e) {
e.printStackTrace();
/// layers = new Layer[]{
/// new LayerBreakground(0,0,0,0),
///new LayerDateBase(40, 32, 334, 279),
///new LayerDisk(40, 343, 334, 279),
/// new LayerGame(414, 32, 334, 590),
/// new LayerButton(788, 32, 334, 124),
/// new LayerNext(788, 188, 176, 148),
///new LayerLevel(964, 188, 158, 148),
///new LayerPoint(788, 368, 334, 200)
/// };
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void paintComponent(Graphics g) {
//回圈重繪視窗
for(int i = 0; i< layers.size(); i++) {
//重繪層視窗
layers.get(i).paint(g);
///}
}}}
package ui;
import javax.swing.*;
import java.awt.*;
public class FrameGame extends JFrame {
public FrameGame() {
//設定標題
this.setTitle("俄羅斯方塊");
//設定默認關閉
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//視窗大小
this.setSize(1150,650);
//用戶不可更改大小
this.setResizable(false);
//居中
this.setLocationRelativeTo(null);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screen = toolkit.getScreenSize();
int x = (screen.width-this.getWidth())/2;
int y = (screen.height-this.getHeight())/2-30;
this.setLocation(x, y);
//設定默認panel
this.setContentPane(new PanelGame());
}
}
package main;
import ui.FrameGame;
import java.awt.*;
public class Main {
public static void main(String[] args) {
new FrameGame().setVisible(true);
}
}
uj5u.com熱心網友回復:
沒有把例外貼出來,如果是空指標,可以看到是哪一行拋出來的。uj5u.com熱心網友回復:
java.lang.ClassNotFoundException: ui.LayerBackgroundat java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at ui.PanelGame.<init>(PanelGame.java:29)
at ui.FrameGame.<init>(FrameGame.java:24)
at main.Main.main(Main.java:10)
Process finished with exit code 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101806.html
標籤:Java SE
上一篇:關于大型系統架構該如何進行設計?
下一篇:請教各位大佬一個多執行緒的問題
