Java 如何在复选框中输入值

Java 如何在复选框中输入值,java,swing,checkbox,Java,Swing,Checkbox,这是我的代码,我只想做一个收据,当你选中复选框时,里面有值,它会连续打印带有值的标签 import java.awt.event.*; import java.awt.*; import javax.swing.*; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class GUI extends JFrame implements ActionListener

这是我的代码,我只想做一个收据,当你选中复选框时,里面有值,它会连续打印带有值的标签

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class GUI extends JFrame implements ActionListener

{

private JLabel label;
private JCheckBox checkbox,checkbox2,checkbox3,checkbox4,checkbox5,
checkbox6,checkbox7,checkbox8,checkbox9,
checkbox10,checkbox11,checkbox12,checkbox13,checkbox14,checkbox15,
checkbox16,checkbox17,checkbox18,checkbox19,checkbox20;
 private JButton button;


public GUI()
{
Container pane= getContentPane();
pane.setLayout(new GridLayout(15,1));

JPanel jp= new JPanel();

label= new JLabel("McDonald's");
checkbox = new JCheckBox("Cheese Burger");
checkbox2 = new JCheckBox("Big Mac");
checkbox3 = new JCheckBox("Big n' Tasty");
checkbox4 = new JCheckBox("McSpicy");
checkbox5 = new JCheckBox("Quarter Pounder with Cheese");
checkbox6 = new JCheckBox("Double Cheeseburger");
checkbox7 = new JCheckBox("McChicken Sandwich");
checkbox8 = new JCheckBox("Filet-O-Fish");
checkbox9 = new JCheckBox("Cheeseburger Deluxe");
checkbox10 = new JCheckBox("Burger Mcdo");
checkbox11 = new JCheckBox("Chicken Filet with Drinks");
checkbox12 = new JCheckBox("Spaghetti with Drinks");
checkbox13 = new JCheckBox("Hot Fudge Sundae ");
checkbox14 = new JCheckBox("Caramel Sundae");
 checkbox15 = new JCheckBox("Large Mcdo French Fries");
checkbox16 = new JCheckBox("Chicken Nuggets with coke");
checkbox17 = new JCheckBox("Coke Float");
checkbox18 = new JCheckBox("Green Apple Float");
checkbox19 = new JCheckBox("Crispy Chicken with rice");
checkbox20 = new JCheckBox("Oreo Sundae");
button = new JButton("Order Now");

add(label);

pane.add(checkbox);
pane.add(checkbox2);
pane.add(checkbox3);
pane.add(checkbox4);
pane.add(checkbox5);
pane.add(checkbox6);
pane.add(checkbox7);
pane.add(checkbox8);
pane.add(checkbox9);
pane.add(checkbox10);
pane.add(checkbox11);
pane.add(checkbox12);
pane.add(checkbox13);
pane.add(checkbox14);
pane.add(checkbox15);
pane.add(checkbox16);
pane.add(checkbox17);
pane.add(checkbox18);
pane.add(checkbox19);
pane.add(checkbox20);

add(button);
add(jp, BorderLayout.SOUTH);
label.setHorizontalAlignment(JLabel.CENTER);

button.setSize(10,10);
button.addActionListener(this);

setSize(500,550);
setVisible(true);

 }
 public void actionPerformed(ActionEvent e)
 {
 String gulp = e.getActionCommand();
{
if ( gulp.equals("Order Now"))
   {
   new Receipt();
  setVisible(true);
  dispose();
}
}
}
public static void main(String[] args)
{
GUI r= new GUI();
}
}
这是我的第二个代码,这是我想要实现的收据格式

    import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Receipt extends JFrame
{

private JLabel label,label2,label3,label4,label5,
label6,label7,label8,label9,label10;;


public Receipt()
{
    Container pane= getContentPane();
    pane.setLayout(new GridLayout(13,1));

    label= new JLabel("MC DONALD'S");
    label2= new JLabel("McDonald's Tandang Sora");
    label3= new JLabel("#22 Tandang Sora Corner, Commonwealth Avenue, Quezon City");
    label4= new JLabel("Telephone# (02)86236");
    label5= new JLabel("MACHINE SERIAL NUMBER: D123HJ01");


    label6= new JLabel("Card Issuer: Sharina Tortoles");
    label7= new JLabel("Account Number# 337163990");
    label8= new JLabel("February 22, 2014  12:45");
    label9= new JLabel("Thank You for choosing Mcdonald's");
    label10= new JLabel("Please come again");


    label.setHorizontalAlignment(JLabel.CENTER);
    label2.setHorizontalAlignment(JLabel.CENTER);
    label3.setHorizontalAlignment(JLabel.CENTER);
    label4.setHorizontalAlignment(JLabel.CENTER);
    label5.setHorizontalAlignment(JLabel.CENTER);
    label6.setHorizontalAlignment(JLabel.CENTER);
    label7.setHorizontalAlignment(JLabel.CENTER);
    label8.setHorizontalAlignment(JLabel.CENTER);
    label9.setHorizontalAlignment(JLabel.CENTER);
    label10.setHorizontalAlignment(JLabel.CENTER);

    pane.add(label, BorderLayout.NORTH);
    pane.add(label2);
    pane.add(label3);
    pane.add(label4);
    pane.add(label5);
    pane.add(label6);
    pane.add(label7);
    pane.add(label8);
    pane.add(label9);
    pane.add(label10);


    setSize(500,500);
    setVisible(true);
 }

 public static void main(String[] args)
 {
    Receipt g= new Receipt();

  }
 }

希望您能清楚地知道我希望如何使用代码

我想
EnumSet
就是您想要的:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;

enum Receipt {
  CheeseBurger("Cheese Burger"),
  BigMac("Big Mac"),
  BigNTasty("Big n' Tasty"),
  McSpicy("McSpicy"),
  QuarterPounderWithCheese("Quarter Pounder with Cheese"),
  DoubleCheeseburger("Double Cheeseburger"),
  McChickenSandwich("McChicken Sandwich");
  //JCheckBox("Filet-O-Fish"),
  //JCheckBox("Cheeseburger Deluxe"),
  //JCheckBox("Burger Mcdo"),
  //JCheckBox("Chicken Filet with Drinks"),
  //JCheckBox("Spaghetti with Drinks"),
  //JCheckBox("Hot Fudge Sundae "),
  //JCheckBox("Caramel Sundae"),
  //JCheckBox("Large Mcdo French Fries"),
  //JCheckBox("Chicken Nuggets with coke"),
  //JCheckBox("Coke Float"),
  //JCheckBox("Green Apple Float"),
  //JCheckBox("Crispy Chicken with rice"),
  //JCheckBox("Oreo Sundae");
  private final String str;
  private Receipt(String str) {
    this.str = str;
  }
  @Override public String toString() {
    return str;
  }
}

public class GUI2 {
  private JButton button = new JButton(new AbstractAction("Order Now") {
    @Override public void actionPerformed(ActionEvent e) {
      EnumSet<Receipt> r = EnumSet.noneOf(Receipt.class);
      for (ReceiptCheckBox c: list) {
        if (c.isSelected()) {
          r.add(c.getReceipt());
        }
      }
      JOptionPane.showMessageDialog((JComponent) e.getSource(), r);
    }

  });
  private List<ReceiptCheckBox> list = new ArrayList<>(Receipt.values().length);

  public JComponent makeUI() {
    JPanel p = new JPanel();
    for (Receipt r: Receipt.values()) {
      ReceiptCheckBox c = new ReceiptCheckBox(r);
      list.add(c);
      p.add(c);
    }
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(new JLabel("McDonald's"), BorderLayout.NORTH);
    panel.add(button, BorderLayout.SOUTH);
    panel.add(p);
    return panel;
  }
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      @Override public void run() {
        createAndShowGUI();
      }
    });
  }
  public static void createAndShowGUI() {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.getContentPane().add(new GUI2().makeUI());
    f.setSize(320, 240);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
  }
}

class ReceiptCheckBox extends JCheckBox {
  private final Receipt receipt;
  public ReceiptCheckBox(Receipt receipt) {
    super(receipt.toString());
    this.receipt = receipt;
  }
  public Receipt getReceipt() {
    return receipt;
  }
}
import java.awt.*;
导入java.awt.event.*;
导入java.util.*;
导入java.util.List;
导入javax.swing.*;
枚举收据{
奶酪汉堡(“奶酪汉堡”),
巨无霸(“巨无霸”),
BigNTasty(“Big n'Tasty”),
麦香辣(“麦香辣”),
四分之一磅奶酪(“四分之一磅奶酪”),
双芝士汉堡(“双芝士汉堡”),
麦基肯三明治(“麦基肯三明治”);
//JCheckBox(“菲力鱼”),
//JCheckBox(“豪华奶酪汉堡”),
//JCheckBox(“汉堡麦当劳”),
//JCheckBox(“鸡柳配饮料”),
//JCheckBox(“饮料意大利面”),
//JCheckBox(“热软糖圣代”),
//JCheckBox(“焦糖圣代”),
//JCheckBox(“大型麦当劳薯条”),
//JCheckBox(“可乐鸡块”),
//JCheckBox(“焦炭浮子”),
//JCheckBox(“绿苹果浮动”),
//JCheckBox(“脆鸡饭”),
//JCheckBox(“奥利奥圣代”);
私有最终字符串str;
私人收据(字符串str){
this.str=str;
}
@重写公共字符串toString(){
返回str;
}
}
公共类GUI 2{
私有JButton按钮=新JButton(新抽象操作(“立即订购”){
@覆盖已执行的公共无效操作(ActionEvent e){
EnumSet r=EnumSet.noneOf(Receipt.class);
用于(接收复选框c:列表){
如果(c.isSelected()){
r、 添加(c.getReceipt());
}
}
showMessageDialog((JComponent)e.getSource(),r);
}
});
私有列表=新的ArrayList(Receipt.values().length);
公共JComponent makeUI(){
JPanel p=新的JPanel();
对于(收据r:Receipt.values()){
ReceiptCheckBox c=新的ReceiptCheckBox(r);
增加(c)项;
p、 添加(c);
}
JPanel panel=newjpanel(newborderlayout());
面板。添加(新JLabel(“麦当劳”),BorderLayout。NORTH);
面板。添加(按钮,边框布局。南);
小组委员会.添加(p);
返回面板;
}
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@重写公共无效运行(){
createAndShowGUI();
}
});
}
公共静态void createAndShowGUI(){
JFrame f=新的JFrame();
f、 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f、 getContentPane().add(新GUI2().makeUI());
f、 设置大小(320240);
f、 setLocationRelativeTo(空);
f、 setVisible(真);
}
}
类ReceiptCheckBox扩展了JCheckBox{
私人最终收据;
公共收据复选框(收据){
super(receipt.toString());
这个。收据=收据;
}
公共收据getReceipt(){
回执;
}
}

“希望您能清楚地知道我希望在代码中发生什么”-事实并非如此。你还没问过一个问题。什么不起作用?我的水晶球显示:对于在
GUI
中选中的每个复选框,您希望在
收据
框架中添加一个
JLabel
。此标签应包含与所选相应复选框的字符串相同的字符串。这是正确的吗?是的。我还希望在收据框中看到复选框的值,以及与复选框相同字符串的标签。