【发布时间】:2013-12-20 01:50:44
【问题描述】:
基本上,我正在尝试对我的 GUI 进行测试,以确保它能够绘制。 这是我的课程: 游戏
public class Game {
private static GUI gui = new GUI();
private static int[][] pixels = new int[10][10];
public static void main(String[] args) {
}
public void startGame() {
System.out.print("start");
gui.setGameFrame();
}
public static GUI getGUI() {
return gui;
}
public static int[][] getGraphics() {
return pixels;
}
}
图形界面
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class GUI extends JPanel {
private static Game game = new Game();
private static JPanel panel = new JPanel();
private static JFrame frame = new JFrame();
final private static int FRAME_HEIGHT = 500;
final private static int FRAME_WIDTH = 500;
//Board size 25x25px
final private static int PIXEL_SIZE = 20;
public GUI () {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setAttributes();
makeMenu();
}
});
}
public static void setAttributes() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("");
frame.setBackground(Color.black);
frame.setVisible(true);
}
private static void makeMenu() {
JButton start = new JButton("Start");
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
game.startGame();
}
});
panel.add(start);
frame.add(panel);
frame.pack();
}
public void setGameFrame() {
panel.removeAll();
frame.getContentPane().add(Game.getGUI());
frame.setTitle("Snake v0.1");
frame.setSize(getPreferredSize());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.white);
g.fillRect(5, 5, 10, 10);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(FRAME_WIDTH, FRAME_HEIGHT);
}
public void paintGraphics() {
int[][] pixels = Game.getGraphics();
}
}
我已尝试对其进行调试,但无法追踪其无法正常工作的原因。
我相信这与以下内容有关:
frame.getContentPane().add(Game.getGUI());
但我不确定。
【问题讨论】:
-
-1,退出多发。你已经有了一个关于这个的话题并且你得到了很好的建议 (stackoverflow.com/q/20693744/131872)。将对话保留在一个帖子中,以便每个人都知道建议的内容。你看教程了吗?还有一个关于
Custom Painting的部分将向您展示如何更好地构建您的程序。从一个工作示例开始,然后自定义绘画。 -
您的
main方法为空 -
Game类的目的是什么?为什么不直接运行 Gui 类中的所有内容? -
@peeskillet 因为进一步的代码将涉及逻辑和事件处理,并将这些事件发送到 GUI 类进行更新。
标签: java swing graphics paintcomponent