2014-10-02 3 views
1

Нам сказали, что у вас есть 10 флажков, и пользователю разрешено только установить флажки 1-3. После того, как пользователь нажимает кнопку, указывающую, что он выполнил требования, и после того, как компьютер случайно выбирает флажок. Оставшийся флажок будет рассмотрен в качестве победителя. Кстати, это игровая программа.
Я использую Swing и AWT.Как я могу установить флажок?

ответ

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(); 
    } 
} 
+0

этот код только 4 флажка в целом? – Sham

+0

Нет, этот пример позволит вам иметь столько кнопок, сколько у вас есть, но будет контролировать изменения, которые должны произойти (в соответствии с тем, что я понял из вашего сообщения), когда ящики проверяются/не проверены. – Tavo

+0

хорошо .. плохо попробуйте применить его, спасибо за помощь – Sham

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(); 
      } 
     }); 
    } 
} 
Смежные вопросы