-1

私はJava UIが初めてで、次の基本的な質問があります:

3 つの swing コンポーネントを含むカスタム クラスを作成し、このコンポーネントを UI に追加したいと考えています。

class ListItem extends JComponent{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JCheckBox checkbox;
    JLabel label;
    JButton removeBtn;

    public ListItem(String label) {
        this.label = new JLabel();
        this.label.setText(label);

        this.checkbox = new JCheckBox();

        this.removeBtn = new JButton();
        removeBtn.setText("Remove");
    }
}

そしてそれをUIに追加するために、私はこれをやっています:

panelContent = new JPanel(new CardLayout());
this.add(panelContent, BorderLayout.CENTER); //some class which is added to UI

ListItem mItem = new ListItem("todo item 1");
panelContent.add(mItem);

しかし、それは機能していません.UIに何も追加していません.次のコードは完全に機能しています:

panelContent = new JPanel(new CardLayout());
this.add(panelContent, BorderLayout.CENTER); //some class which is added to UI

JLabel lab = new JLabel();
lab.setText("label");
panelContent.add(lab);
4

1 に答える 1

5

問題はListItem、コンポーネント自体にコンポーネントを追加していないことです。また、 にJComponentは default がないLayoutManagerため、設定する必要があります。

次のようなものかもしれません:

class ListItem extends JComponent{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JCheckBox checkbox;
    JLabel label;
    JButton removeBtn;

    public ListItem(String label) {
        setLayout(new BorderLayout());
        this.label = new JLabel();
        this.label.setText(label);

        this.checkbox = new JCheckBox();

        this.removeBtn = new JButton();
        removeBtn.setText("Remove");
        add(checkbox, BorderLayout.WEST);
        add(this.label);
        add(removeBtn, BorderLayout.EAST);
    }
}
于 2013-04-29T07:32:30.920 に答える