2016-06-16 6 views
0

私のcontentpane、panelのサイズを変更しても、それを呼び出すと、変数optelはそれを小さくするか大きくすることで大きくなりますか?それはなぜ、どのように修正するのですか?私はオランダの「ガンゼンバード」ゲームを作っています。私はまた、言うオプションが必要です。プレイヤー1は賭けを賭け、プレイヤー2のターンはサイコロを投げる。私のcontentpaneのサイズを変更すると、optelが大きくなる

package Opdrachten; 

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Random; 

import javax.swing.*; 

public class spel extends JPanel { 
private JButton knop; 
private boolean geklikt; 
private boolean player1, player2; 
Random rand = new Random(); 
int waarde = rand.nextInt(6) + 1; // De plus een is zodat je geen 0 krijgt 
int optel = 0; 

public spel() { 
    setBackground(Color.WHITE); 
    knop = new JButton("Gooi!"); 
    knop.addActionListener(new KnopHandler()); 
    add(knop); 

} 

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    if(geklikt) { 
     optel += waarde; 
     g.drawString("Je hebt " + waarde + " gegooid. Dit is totaal:" + optel, 100, 70); 

     if (waarde == 1) { 
      g.drawString("Je mag 1 vakje naar voren", 100, 90); 
     } 
     if (waarde == 2) { 
      g.drawString("Je mag 2 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 3) { 
      g.drawString("Je mag 3 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 4) { 
      g.drawString("Je mag 4 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 5) { 
      g.drawString("Je mag 5 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 6) { 
      g.drawString("Je mag 6 vakjes naar voren", 100, 90); 
     } 
    } 

    if (optel == 6) { 
     optel = 12; 
     g.drawString("Ga verder naar 12", 100, 120); 
    } 
    if (optel == 19) { 
     g.drawString("Sla een beurt over", 100, 120); 
    } 
    if (optel == 31) { 
     g.drawString("Wie hier komt moet er blijven tot een andere speler er komt. Degene die er het eerst was speelt dan verder.", 100, 120); 
    } 
    if(optel == 42){ 
     optel = 39; 
     g.drawString("Terug naar 39", 100, 120); 
    } 
    if(optel == 52){ 
     g.drawString("Drie beurten overslaan", 100, 120); 
    } 
    if(optel == 58){ 
     optel = 0; 
     g.drawString("Terug naar het begin, opnieuw beginnen", 100, 120); 
    } 
    if(optel == 63){ 
     g.drawString("Wie hier als eerste komt heeft gewonnen", 100, 120); 
    } 
} 

class KnopHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     geklikt = true; 
     waarde = rand.nextInt(6) + 1; // get another random number 
     repaint(); 

    } 
} 

} 
+1

質問タグが変更されました:この質問は、Eclipseとは関係なく、すべてSwingと関連しています。 –

答えて

2

あなたの主な問題は、paintComponentここで、Swingのペイントメソッド内で、プログラムロジックと状態変更コード、ここoptel += waarde;を持っていることです。このメソッドがいつ呼び出されるか、コンポーネントのサイズ変更や再描画中に呼び出されるか、このメソッド内ではプログラムロジックや状態変更コードを決して使用しないでください。そのコードは他の場所にあり、paintComponentはペイントとペイントのみに使用する必要があります。

私の推測では、optel += waarde;はあなたのActionListener内にあるはずですが、あなたのプログラムが何をしているのかわからないので、これは単なる推測です。

関連する問題