我正在做一个用于拼贴的项目(类似餐馆),我在Java方面不是很好(他们并没有真正教我们)。该项目的原则是显示一条消息,说明我选择了哪些单选按钮和复选框。
我有5个单选按钮,用于选择餐点,5个复选框用于选择配菜。我设法让单选按钮工作,但我不知道如何使复选框工作......
这是单选按钮的代码(这适用于所有5个):
private void jRadioButton1ItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getSource().equals(jRadioButton1))
{
Meal= jRadioButton1.getText(); //Meal is a String
}
我为复选框尝试了相同的代码,但它只在消息中显示了一个配菜,即使我选择了多个...
显示消息的按钮的代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(rootPane, "You have chosen:\n" + String.valueOf(Meal) + "\n" + String.valueOf(SideDish));
}
So basically, if anyone is willing to help, please tell me how to make the check boxes work... that every selected check box is shown in the message, like this:
You have chosen:
Pizza //meal
Ketchup //selected side dish #1
Chilli peppers //selected side dish #2
Feta cheese //selected side dish #3
我希望我的问题很明确......
答案 0 :(得分:3)
由于您要显示零个或多个复选框的文本,因此需要检查每个复选框是否已被选中,并连接生成的文本,而不是仅保留一个选项。此外,由于可以单独检查和取消选中复选框,因此最好仅在按下按钮时检查其状态,而不是一直尝试跟踪它们。 E.g:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
SideDish = "";
if (jCheckBox1.getState()))
{
SideDish += jCheckBox1.getText();
}
...
if (jCheckBox5.getState()))
{
SideDish += ", " + jCheckBox5.getText();
}
JOptionPane.showMessageDialog(rootPane, "You have chosen:\n" + Meal + "\n" + SideDish);
}
这只是一个插图,它不会总是正确显示分隔逗号 - 我会将修复程序留给您作为练习: - )
更优雅的解决方案是使用一系列字符串来收集配菜 - 再次,您可以尝试改进代码。
顺便说一下,您不需要String.valueOf()
来打印String
,所以我从上面的代码中删除了它。 Java编码约定是用小写字母启动变量/字段名称。
答案 1 :(得分:2)
由于您可以同时选择多个复选框,因此您应该收集集合中的选中值。 Set<String>
会浮现在脑海中,因为您只能选择一个配菜。
此外,您没有遇到此问题,因为每个选择的单选按钮都覆盖了前一个单选按钮,但是如果未选中相应的复选框,则需要从该组中删除项目。
注意:Set<>
是一个接口,您需要一个实现类来实际使用它。在您的情况下,HashSet<>
可以使用(请参阅Set和HashSet的可用方法的文档)
当您显示配菜的选择时,您可以枚举集合中的元素并一个接一个地打印它们,或者通过连接元素将结果收集到字符串中。
注意:如果您可以直接访问复选框,则可能无法访问该集:在显示选择了哪个配菜时,只需检查每个复选框的状态并累积选择字符串如上所述
答案 2 :(得分:1)
这是一个例子
让我们说你有4个支持
Vector<JCheckBox> boxes = new Vector<JCheckBox>
boxes.add(checkbox1) .... .add(checkbox4);
并点击按钮
Vector<String> sideDishes = new Vector<String>();
for(int i=0; i<boxes.size(); i++){
if(boxes.elementAt(i).isSelected(){
sideDishes.add(boxes.elementAt(i).getText();
}
}
答案 3 :(得分:0)
我想首先你要学习的是如何分析问题以及如何使用Google或其他搜索引擎网站,所以请尝试阅读this文档并查看示例