我们被告知有10个复选框,用户只允许检查1-3个复选框。用户点击一个表示他/她已完成要求的按钮并在计算机随机选择一个复选框后。其余的复选框将被视为获胜者。顺便说一句,这是一个游戏程序。
我正在使用Swing和AWT。如何限制选中的复选框?
1
A
回答
2
您可以限制复选框被选择或不被禁用成分:
JCheckBox checkBox = new JCheckBox("Try to click on me");
checkBox.setEnabled(false);
如果复选框未启用(禁用),用户无法选择它。
0
如果我理解的很好,您想要限制用户在轮到他时可以点击的复选框的数量。您可以有一个计数器,告诉您用户迄今点击的复选框的数量。当计数器达到1时,该按钮将被激活并且用户将能够点击它。当计数器达到3时,所有其他复选框将停用。如果用户想要改变他选择的复选框,那么他将不得不取消任何已经选中的复选框。
该代码将是这样的:
onCheckboxSelected()
{
if(numberOfCheckedButtons == 1)
{
activateButton();
}
else if(numberOfCheckedButtons == 3):
{
deactivateAllCheckBoxes();
}
}
onCheckboxUnselected()
{
if(numberOfCheckedButtons == 0)
{
deactivateButton();
}
else if (numberOfCheckedButtons == 2) //This is the case when the user passes from 3 selected checkboxes to 2
{
activateAllCheckboxes();
}
}
1
防止因跟踪每个复选框的选择附加复选框用户当前选择:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class CheckBoxGroup
{
private Set<GroupButtonModel> models = new HashSet<GroupButtonModel>();
private int groupSize;
public CheckBoxGroup(int groupSize)
{
this.groupSize = groupSize;
}
public void register(JCheckBox checkBox)
{
ButtonModel groupModel = new GroupButtonModel();
groupModel.setSelected (checkBox.getModel().isSelected());
checkBox.setModel(groupModel);
}
private class GroupButtonModel extends JToggleButton.ToggleButtonModel
{
@Override
public void setSelected(boolean selected)
{
if (!selected)
{
models.remove(this);
super.setSelected(selected);
return;
}
// Check number of currently selected check boxes
if (models.size() == groupSize)
{
System.out.println("Only " + groupSize + " items can be selected");
}
else
{
models.add(this);
super.setSelected(selected);
}
}
}
private static void createAndShowGUI()
{
JPanel panel = new JPanel();
CheckBoxGroup group = new CheckBoxGroup(3);
for (int i = 0; i < 10; i++)
{
JCheckBox checkBox = new JCheckBox(String.valueOf(i));
panel.add(checkBox);
group.register(checkBox);
}
JFrame frame = new JFrame("Check Box Group");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(panel);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}
相关问题
- 1. 如何限制复选框选择
- 2. 限制选择复选框
- 3. 限制默认选中复选框
- 4. Javascript,复选框选中限制
- 5. 如何限制ListView中选中的复选框?
- 6. VB.NET-如何限制listview中的复选框选择?
- 7. 如何限制listview中的复选框选择?
- 8. 如何限制angularjs中的复选框选择
- 9. 复选框选择的限制
- 10. 限制复选框按类
- 11. 限制阵列复选框
- 12. Vue.js限制选择复选框5
- 13. 限制复选框的选择基于其他复选框的选择
- 14. 如何限制与角或jquery的复选框选择
- 15. 如何限制选择复选框量 - JavaFX的
- 16. 如何限制在VB.NET复选框的选择2010
- 17. 限制复选框与jquery基于选中的单选按钮
- 18. 如何复制行复选框选中未选中jquery?
- 19. 如何限制用户只选择一个复选框?
- 20. 如何限制某些用户勾选excel复选框
- 21. MVC - 如何获取选中的复选框中的复选框
- 22. 与选中的复选框复制行
- 23. PHP/JavaScript的限制量的复选框
- 24. 如何选中复选框?
- 25. 如何制作复选框?
- 26. 限制选中的复选框的数量与Twitter的引导
- 27. 如何限制MS Word表格列中复选框的数量?
- 28. 如何限制复选框列表中的元素数量?
- 29. 限制复选框的数量
- 30. jQuery的复选框以限制dinamis
是这样的代码只有总共4个复选框? – Sham 2014-10-02 13:13:07
不,这个例子将允许你拥有尽可能多的按钮,但是当盒子被选中/取消选中时,它将控制应该发生的改变(根据我的理解)。 – Tavo 2014-10-03 06:18:01
好吧..生病尝试应用它,谢谢你的帮助 – Sham 2014-10-04 03:13:32