이 코드를 jApplet으로 실행하려면 어떻게해야합니까?이 jApplet은 어떻게 작동합니까?
내 애플릿은 이제 다음과 같습니다
public class TickTackToeApplet extends JApplet implements ActionListener {
private static final long serialVersionUID = 1L;
private ArrayList<JButton> buttons = new ArrayList<JButton>();
private JPanel panel = new JPanel();
private Game game = new Game();
private Player player1;
private Player player2;
private int numberOfPlacedOutChars = 0;
private String winner = "None";
public void init() {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
game = new Game();
game.setSize(4);
try {
PlayerManager pm = new PlayerManager();
player1 = pm.getPlayer("Henrik", "temp123");
player2 = pm.getPlayer("test", "test");
} catch (IOException e) {
e.printStackTrace();
}
createGUI(game.getSize());
}
});
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void CreateButtons(int gameBoardSize)
{
for(int x=0; x<gameBoardSize; x++)
{
for(int y=0; y<gameBoardSize; y++)
{
JButton btn = new JButton("");
btn.setFont(new Font("Tahoma", Font.PLAIN, 32));
btn.setName(x + ";" + y);
btn.addActionListener(this);
buttons.add(btn);
}
}
}
public void PlaceOutButtons()
{
for(JButton btn : buttons)
panel.add(btn);
}
public void createGUI(int gameBoardSize) {
panel.setSize(gameBoardSize*25, gameBoardSize*25);
panel.setBackground(Color.BLACK);
getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new GridLayout(gameBoardSize, gameBoardSize));
CreateButtons(gameBoardSize);
PlaceOutButtons();
}
@Override
public void actionPerformed(ActionEvent e) {
JButton buttonClicked = (JButton)e.getSource();
String coordinates = buttonClicked.getName();
String[] strArr = coordinates.split(";");
int x = Integer.parseInt(strArr[0]);
int y = Integer.parseInt(strArr[1]);
if (this.numberOfPlacedOutChars % 2 == 0) {
this.player1.setGameChar('X');
this.game.placeChar('X', x, y);
buttonClicked.setText("X");
buttonClicked.setEnabled(false);
}
else {
this.player2.setGameChar('O');
this.game.placeChar('O', x, y);
buttonClicked.setText("O");
buttonClicked.setEnabled(false);
}
numberOfPlacedOutChars++;
if(this.game.checkWin() == true) {
updatePlayersInfo();
for(JButton btn : buttons) {
btn.setEnabled(false);
}
int choice = JOptionPane.showConfirmDialog(this, "Winner is: " + this.winner +
", play again?", "WINNER", JOptionPane.YES_NO_OPTION);
if(choice == 0) {
clearGameBoard();
return;
}
//stop the applet
stop();
}
if(this.game.IsDonePlaying() && this.game.checkWin() == false) {
int choice = JOptionPane.showConfirmDialog(this, "Winner is: " + this.winner +
", play again?", "WINNER", JOptionPane.YES_NO_OPTION);
if(choice == 0) {
clearGameBoard();
return;
}
//stop the applet
stop();
}
}
public void startGame(int gameSize, Player player1, Player player2) {
this.game.setSize(gameSize);
this.player1 = player1;
this.player2 = player2;
}
private void updatePlayersInfo() {
if(this.game.getWinningChar() == this.player1.getGameChar()) {
this.player1.incrementWins();
this.player2.incrementLosses();
this.winner = this.player1.getUserName();
}
if(this.game.getWinningChar() == this.player2.getGameChar()) {
this.player2.incrementWins();
this.player1.incrementLosses();
this.winner = this.player2.getUserName();
}
try {
PlayerManager playerManager = new PlayerManager();
playerManager.savePlayer(this.player1);
playerManager.savePlayer(this.player2);
} catch (IllegalArgumentException | IOException | InterruptedException e1) {
JOptionPane.showMessageDialog(this, "Couldn't update player info!");
}
}
private void clearGameBoard() {
for(JButton btn : this.buttons) {
btn.setEnabled(true);
btn.setText("");
this.winner = "None";
this.game.setWinningChar('\0');
}
}
}
하지만 내 애플릿 밤은 브라우저에 표시.
html 파일에서이 애플릿 태그를 사용할 수 있습니까?
<applet codebase="bin" code="gui/TickTackToeApplet.class" width=500 height=500>
<p>Testing my applet...</p>
</applet>
아니면 애플릿 태그에 무엇을 써야합니까?
스윙, 애플릿 및 Java 코드 규칙에 대한 자습서를 읽으셨습니까? –
네,하지만 초심자인데 이해가 안됩니다. 몇 개월 만 프로그래밍했습니다. init 메소드가 주요 메소드입니까? – Henrik
더 나은 전략은 애플릿을 잊어 버리는 것입니다. [Java Web Start] (http://stackoverflow.com/tags/applet/info)를 사용하여 링크에서 JFrame을 실행하십시오. –