java - 检索与 JCheckBox 关联的字符串

标签 java

我有一个彩票游戏问题,我能够正确计算选中框的数量,但我不明白如何获取分配给 JcheckBox 的字符串编号。我以为我可以使用 .getText 但这不起作用。我不确定我是否使用了正确的监听器。

    import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JLottery2 extends JFrame implements ItemListener {
private String[] lotteryNumbers = { "1", "2", "3", "4", "5", "6", "7", "8",
        "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
        "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" };
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private JPanel jp3 = new JPanel(new GridLayout(3, 10, 5, 5));
private JLabel jl1 = new JLabel("The Lottery Game!!!!!");
private JLabel jl2 = new JLabel(
        "To play, pick six number that match the randomly selected numbers.");
private FlowLayout layout = new FlowLayout();
private GridLayout gridBase = new GridLayout(3, 1, 5, 5);
private GridLayout grid = new GridLayout(3, 10, 5, 5);
private Font heading = new Font("Palatino Linotype", Font.BOLD, 24);
private Font bodyText = new Font("Palatino Linotype", Font.BOLD, 14);
private Color color1 = new Color(4, 217, 225);
private Color color2 = new Color(4, 225, 129);
private int maxNumber = 6;
private int counter = 0;
private int[] randomNum;
private String[] userPickedNumbers;

Container con = getContentPane();

public JLottery2() {
    super("The Lottery Game");
    con.setLayout(gridBase);
    con.add(jp1);
    jp1.setLayout(layout);
    jp1.add(jl1);
    jl1.setFont(heading);
    jp1.setBackground(color1);

    con.add(jp2);
    jp2.setLayout(layout);
    jp2.add(jl2);
    jl2.setFont(bodyText);
    jp2.setBackground(color1);

    con.add(jp3);
    jp3.setLayout(grid);
    for (int i = 0; i < lotteryNumbers.length; i++) {
        JCheckBox checkBox[] = new JCheckBox[lotteryNumbers.length];
        checkBox[i] = new JCheckBox(lotteryNumbers[i]);
        jp3.add(checkBox[i]);
        jp3.setBackground(color2);
        checkBox[i].addItemListener(this);
    }

    setSize(500, 300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void randNumber() {
    randomNum = new int[maxNumber];
    for (int i = 0; i < maxNumber; i++) {
        randomNum[i] = ((int) (Math.random() * 100) % lotteryNumbers.length + 1);
        System.out.println(randomNum[i]);
    }

}

public static void main(String[] args) {
    JLottery2 frame = new JLottery2();
    frame.setVisible(true);
}

public void itemStateChanged(ItemEvent e) {
    if (e.getStateChange() == ItemEvent.SELECTED && counter < maxNumber) {
        counter++;
        System.out.println("add");
        System.out.println(counter);

    } else if (e.getStateChange() == ItemEvent.DESELECTED
            && counter < maxNumber) {
        counter--;
        System.out.println("deduct");
        System.out.println(counter);
    }
    if (counter == maxNumber) {
        System.out.println("max");
        jp3.setVisible(false);
        randNumber();
        System.out.println(userPickedNumbers);

    }
}

}

最佳答案

((JCheckBox)e.getSource()).getText() 

用你的代码对我来说工作得很好。

关于java - 检索与 JCheckBox 关联的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296096/

相关文章:

java - 如何在JTable中动态添加行

java - 将 BufferedImage 转换为 aws...rekognition.model.Image

java - 弱引用 : reference is destroyed within "seconds"

java - 在 Java 中返回 Iterator 接口(interface)的实例?

java - Katharsis 2.8.2 升级问题

java - 使用WSDL生成REST客户端会是错误的方向吗?

java - 使用 webtarget 从客户端调用剩余请求。但其余资源的参数未映射到客户端模型类参数

java - 了解计算幂集时的递归流程

java - 使用 getNodeValue() 获取文本和内联元素

java - root 用户可以在运行的 JVM 中访问哪些信息?