0

メソッドを使用するJCheckBoxのと同じように、Javaでタイプのアイテムを動的に追加する方法はありますか?JComboBoxaddItem

4

2 に答える 2

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;
    }
}
于 2013-09-19T09:58:45.270 に答える
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
}

上記の例では、jCheckBox で継承されたこのメソッドを使用しており、必要なものを提供できるはずです。

それが役に立てば幸い!

于 2013-09-19T08:59:36.463 に答える