我做了一個簡單的Java遊戲,它由2個類組成(使用JFrame)。我試圖將它導出到一個Runnable jar,但由於某種原因,當我嘗試運行它時,它永遠不會工作。謝謝!導出的遊戲無法正常工作
這裏是我的代碼:
主類
RussianRoulette game = new RussianRoulette();
game.setVisible(true);
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setSize(220, 200);
game.setResizable(false);
}
}
其他類
int lives = 5;
JTextField livesDisplay;
JButton gunButton;
ImageIcon gunCold;
ImageIcon gunActive;
JOptionPane endPane = new JOptionPane();
int endProgram;
int clicked = 0;
JTextField display;
public RussianRoulette() {
super("Russian Roulette");
Font font = new Font("Western", 20, 20);
gunCold = new ImageIcon(getClass().getResource("guncold.gif"));
gunActive = new ImageIcon(getClass().getResource("gunactive.gif"));
JPanel buttonPanel = new JPanel();
JPanel livesPanel = new JPanel();
JPanel displayPanel = new JPanel();
display = new JTextField(" Click Gun To Play!", 15);
livesDisplay = new JTextField("Lives: " + lives, 8);
livesDisplay.setEditable(false);
livesDisplay.setFont(font);
livesDisplay.setBackground(Color.BLACK);
livesDisplay.setForeground(Color.WHITE);
livesPanel.add(livesDisplay);
livesPanel.setBackground(Color.BLACK);
displayPanel.add(display);
displayPanel.setBackground(Color.BLACK);
display.setFont(font);
display.setEditable(false);
display.setBackground(Color.BLACK);
display.setForeground(Color.WHITE);
LayoutManager overlay = new OverlayLayout(buttonPanel);
buttonPanel.setLayout(overlay);
buttonPanel.setBackground(Color.BLACK);
gunButton = new JButton(gunCold);
gunButton.setToolTipText("Click To Pull Trigger");
gunButton.setAlignmentX(0.4f);
gunButton.setAlignmentY(0.0f);
buttonPanel.add(gunButton);
add(buttonPanel, BorderLayout.CENTER);
add(livesPanel, BorderLayout.NORTH);
add(displayPanel, BorderLayout.SOUTH);
gunButton.addActionListener(new ActionListener() {
@SuppressWarnings("static-access")
public void actionPerformed(ActionEvent event) {
Random r = new Random();
int rand = r.nextInt(6);
clicked++;
switch (rand) {
case 0:
display.setText(" Bang! You lost a life.");
lives--;
livesDisplay.setText("Lives: " + lives);
break;
case 1:
display.setText(" You're alive!");
break;
case 2:
display.setText(" You're alive!");
break;
case 3:
display.setText(" You're alive!");
break;
case 4:
display.setText(" You're alive!");
break;
case 5:
display.setText(" You're alive!");
break;
}
Timer imageSwitch = new Timer(984, new TimerListener());
imageSwitch.setRepeats(false);
if (rand == 0) {
imageSwitch.start();
gunButton.setIcon(gunActive);
} else {
gunButton.setIcon(gunCold);
}
if (lives == 0) {
JFrame end = new JFrame();
endPane = new JOptionPane();
end.add(endPane);
endProgram = endPane.showOptionDialog(null, "You survived "
+ clicked + " trigger pulls!", "Game Over",
endPane.OK_CANCEL_OPTION,
endPane.INFORMATION_MESSAGE, null, null, null);
if (endProgram == endPane.OK_OPTION) {
System.exit(0);
} else if (endProgram == endPane.CANCEL_OPTION) {
System.exit(0);
} else if (endProgram == endPane.CLOSED_OPTION) {
System.exit(0);
}
}
}
});
}
private class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
gunButton.setIcon(gunCold);
}
{
if (lives == 0) {
display.setText(" Bang! You're dead.");
}
}
}
}
您是否設置了主類?雙擊它時會發生什麼?什麼都沒有? –
@FastSnail當我雙擊它時,我導出了主類和子類,幾秒鐘後,我收到一個錯誤,指出「Java jar文件無法啓動」。 –
[Java Swing:無法使用getResource加載圖像](http://stackoverflow.com/q/22733881) – Tom