Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调整我的内容窗格大小时,optel会变大_Java_Swing - Fatal编程技术网

Java 调整我的内容窗格大小时,optel会变大

Java 调整我的内容窗格大小时,optel会变大,java,swing,Java,Swing,当我调整contentpane、panel(不管你怎么称呼它)的大小时,我的变量optel会变大还是变小?这是为什么?如何解决?我正在制作荷兰的“甘森博德”游戏。我还需要一个选择说;玩家1掷骰子,轮到玩家2掷骰子 package Opdrachten; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; impo

当我调整contentpane、panel(不管你怎么称呼它)的大小时,我的变量optel会变大还是变小?这是为什么?如何解决?我正在制作荷兰的“甘森博德”游戏。我还需要一个选择说;玩家1掷骰子,轮到玩家2掷骰子

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();

    }
}

}

您的主要问题是您有程序逻辑和状态更改代码,这里
optel+=waarde,在Swing绘制方法中,此处为paintComponent。请理解,您无法完全控制何时或即使调用此方法,也无法完全控制在任何组件重新调整大小或重新绘制期间调用此方法,因此此方法中不应包含程序逻辑或状态更改代码。该代码用于其他地方,并且paintComponent应仅用于绘制和绘制


我猜,
optel+=waarde应该在ActionListener中,但因为我不知道您的程序在做什么,这只是一个猜测。

您的主要问题是您有程序逻辑和状态更改代码,这里是
optel+=waarde,在Swing绘制方法中,此处为paintComponent。请理解,您无法完全控制何时或即使调用此方法,也无法完全控制在任何组件重新调整大小或重新绘制期间调用此方法,因此此方法中不应包含程序逻辑或状态更改代码。该代码用于其他地方,并且paintComponent应仅用于绘制和绘制


我猜,
optel+=waarde应该在ActionListener中,但因为我不知道您的程序在做什么,这只是一个猜测。

问题标签更改:问题与Eclipse无关,与Swing有关。问题标签更改:问题与Eclipse无关,与Swing有关。