2013-09-19 6 views
0

Есть ли способ добавить динамически элементы типа JCheckBox в Java, как в JComboBox, мы используем метод addItem?Динамически добавлять JCheckBoxes

+0

Почему вы хотите добавить "товар" в JCheckbox? –

+0

Возможно, вы хотите добавить кнопки в группу кнопок? – kiheru

+0

Что я хочу сделать, после того, как вы выбрали что-то в моей программе, сгенерируйте ряд других вариантов в зависимости от этого выбора, поэтому я подумал о jCheckList, потому что я хочу выбрать более одного варианта. – alessandrob

ответ

1

Нечто подобное может быть эффективным, если вы хотите добавить несколько элементов к другому компоненту:

List<Component> myList = new Arraylist<Component>() //List for storage 
Item myItem = new Item(); //New component 
myList.add(myItem); //Store all the components to add in the list 

for(int i = 0; i < myList.size; i++){ 
myjCheckBox.add(myList[i]); //Add all items from list to jCheckBox 
} 

В приведенном выше примере используется this метод, унаследованный в JCheckBox и должны быть в состоянии обеспечить то, что вам нужно

Надеюсь, поможет!

+0

Есть ли способ учесть элементы, выбранные в JCheckbox? – alessandrob

+0

Вы имеете в виду что-то вроде хранения элементов, выбранных из вашего JCheckBox, в список? – Levenal

+0

Да, я хочу хранить элементы, выбранные в моем JCheckBox, и повторное использование в моей программе. – alessandrob

1

JCheckList

Примечание вы можете использовать фактические флажки для компонента рендеринга, но это было несколько строк короче.

import java.awt.*; 
import javax.imageio.ImageIO; 
import javax.swing.*; 

class JCheckList { 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       JPanel gui = new JPanel(new BorderLayout()); 

       JLabel l = new JLabel("Ctrl/shift click to select multiple"); 
       gui.add(l, BorderLayout.PAGE_START); 

       JList<String> list = new JList<String>(
         ImageIO.getReaderFileSuffixes()); 
       list.setCellRenderer(new CheckListCellRenderer()); 
       gui.add(list, BorderLayout.CENTER); 

       JOptionPane.showMessageDialog(null, gui); 
      } 
     }; 
     // Swing GUIs should be created and updated on the EDT 
     // http://docs.oracle.com/javase/tutorial/uiswing/concurrency 
     SwingUtilities.invokeLater(r); 
    } 
} 

class CheckListCellRenderer extends DefaultListCellRenderer { 

    String checked = new String(Character.toChars(9745)); 
    String unchecked = new String(Character.toChars(9746)); 

    @Override 
    public Component getListCellRendererComponent(
      JList list, 
      Object value, 
      int index, 
      boolean isSelected, 
      boolean cellHasFocus) { 
     Component c = super.getListCellRendererComponent(
       list,value,index,isSelected,cellHasFocus); 
     if (c instanceof JLabel) { 
      JLabel l = (JLabel)c; 
      String s = (isSelected ? checked : unchecked) + (String)value; 
      l.setText(s); 
     } 

     return c; 
    } 
} 
Смежные вопросы