Java 在JList中添加和删除按钮

Java 在JList中添加和删除按钮,java,swing,jlist,Java,Swing,Jlist,我想在JList中添加/删除按钮。我怎样才能做到 看看Oracle Swing教程,了解如何使用列表: 看一看关于如何使用列表的Oracle Swing教程: jList.AdDelMeNe(和.jList.Rebug元素)可用于向JLIST添加EN删除元素。可选地,考虑按钮友好 JTooBar < /C> >,如:< P>考虑一个友好的按钮>代码> JTooBar ,如 < P> @ RoHIT。我想知道,在JLIST中你需要什么?如果要垂直布局,应使用一些布局管理器,例如BoxLayout

我想在
JList
中添加/删除按钮。我怎样才能做到

看看Oracle Swing教程,了解如何使用列表:


看一看关于如何使用列表的Oracle Swing教程:


jList.AdDelMeNe(和.jList.Rebug元素)可用于向JLIST添加EN删除元素。

< P>可选地,考虑按钮友好<代码> JTooBar < /C> >,如:

< P>考虑一个友好的按钮>代码> JTooBar ,如

< P> @ RoHIT。我想知道,在JLIST中你需要什么?如果要垂直布局,应使用一些布局管理器,例如BoxLayout或(更好的)GridLayout

确实没有理由在JList中使用按钮,在面板中使用按钮也会产生相同的结果

认真地重新考虑你的设计,使用更灵活、更简单的布局管理器


祝你一切顺利,波罗。

@rohit我想知道,你需要什么样的礼物?如果要垂直布局,应使用一些布局管理器,例如BoxLayout或(更好的)GridLayout

确实没有理由在JList中使用按钮,在面板中使用按钮也会产生相同的结果

认真地重新考虑你的设计,使用更灵活、更简单的布局管理器


祝你一切顺利,波罗。

我用了这个密码。试试看

class PanelRenderer implements ListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        JButton renderer = (JButton) value;
        renderer.setBackground(isSelected ? Color.red : list.getBackground());
        return renderer;
    }
}

public void ShowItemList(List<JButton> buttonList, JPanel container) {


        DefaultListModel model = new DefaultListModel();

        for (JButton b:buttonList) {

                model.addElement(b);

        }
        final JList list = new JList(model);
        list.setFixedCellHeight(40);
        list.setSelectedIndex(-1);

        list.setCellRenderer(new JPanelToJList.PanelRenderer());
        JScrollPane scroll1 = new JScrollPane(list);
        final JScrollBar scrollBar = scroll1.getVerticalScrollBar();
        scrollBar.addAdjustmentListener(new AdjustmentListener() {
            @Override
            public void adjustmentValueChanged(AdjustmentEvent e) {
                System.out.println("JScrollBar's current value = " + scrollBar.getValue());
            }
        });
        container.removeAll();
        container.add(scroll1);
}
class PanelRenderer实现ListCellRenderer{
@凌驾
公共组件getListCellRenderComponent(JList列表、对象值、int索引、布尔isSelected、布尔cellHasFocus){
JButton呈现程序=(JButton)值;
renderer.setBackground(isSelected?Color.red:list.getBackground());
返回渲染器;
}
}
公共无效ShowItemList(列表按钮列表,JPanel容器){
DefaultListModel=新的DefaultListModel();
用于(按钮b:按钮列表){
模型.增编(b);
}
最终JList列表=新JList(型号);
列表。设置固定单元高度(40);
列表。设置所选索引(-1);
setCellRenderer(新的JPanelToJList.PanelRenderer());
JScrollPane scroll1=新的JScrollPane(列表);
final JScrollBar scrollBar=scroll1.getVerticalScrollBar();
scrollBar.addAdjustmentListener(新的AdjustmentListener(){
@凌驾
公共无效调整值已更改(调整事件e){
System.out.println(“JScrollBar的当前值=“+scrollBar.getValue());
}
});
container.removeAll();
container.add(scroll1);
}

如果要添加JButton,请将其添加到列表中。如果要删除,请将其从列表中删除,然后再次运行该方法。

我使用了此代码。试试看

class PanelRenderer implements ListCellRenderer {

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        JButton renderer = (JButton) value;
        renderer.setBackground(isSelected ? Color.red : list.getBackground());
        return renderer;
    }
}

public void ShowItemList(List<JButton> buttonList, JPanel container) {


        DefaultListModel model = new DefaultListModel();

        for (JButton b:buttonList) {

                model.addElement(b);

        }
        final JList list = new JList(model);
        list.setFixedCellHeight(40);
        list.setSelectedIndex(-1);

        list.setCellRenderer(new JPanelToJList.PanelRenderer());
        JScrollPane scroll1 = new JScrollPane(list);
        final JScrollBar scrollBar = scroll1.getVerticalScrollBar();
        scrollBar.addAdjustmentListener(new AdjustmentListener() {
            @Override
            public void adjustmentValueChanged(AdjustmentEvent e) {
                System.out.println("JScrollBar's current value = " + scrollBar.getValue());
            }
        });
        container.removeAll();
        container.add(scroll1);
}
class PanelRenderer实现ListCellRenderer{
@凌驾
公共组件getListCellRenderComponent(JList列表、对象值、int索引、布尔isSelected、布尔cellHasFocus){
JButton呈现程序=(JButton)值;
renderer.setBackground(isSelected?Color.red:list.getBackground());
返回渲染器;
}
}
公共无效ShowItemList(列表按钮列表,JPanel容器){
DefaultListModel=新的DefaultListModel();
用于(按钮b:按钮列表){
模型.增编(b);
}
最终JList列表=新JList(型号);
列表。设置固定单元高度(40);
列表。设置所选索引(-1);
setCellRenderer(新的JPanelToJList.PanelRenderer());
JScrollPane scroll1=新的JScrollPane(列表);
final JScrollBar scrollBar=scroll1.getVerticalScrollBar();
scrollBar.addAdjustmentListener(新的AdjustmentListener(){
@凌驾
公共无效调整值已更改(调整事件e){
System.out.println(“JScrollBar的当前值=“+scrollBar.getValue());
}
});
container.removeAll();
container.add(scroll1);
}

如果要添加JButton,请将其添加到列表中。如果要删除,请将其从列表中删除,然后再次运行该方法。

+1非常好的一点。是的,工具栏听起来更适合放置按钮。+1非常好的一点。是的,工具栏听起来更适合放置按钮。我想也许
JList。带有
单一选择的水平环绕
模式可能有一些吸引力,但按钮的布局似乎更易于管理,正如你所建议的。我在想,也许
JList.HORIZONTAL\u WRAP
单一选择模式可能会有一些吸引力,但正如你所建议的那样,按钮的布局似乎更易于管理。发明api可能很有诱惑力,但没有太大帮助;-)javax.swing.JList中没有这样的方法。发明api可能很有诱惑力,但没有太大帮助;-)javax.swing.JList.down-voted中没有这样的方法,因为OP没有阐明(非常不寻常的)需求。由于要求不明确,答案是广泛的猜测(对于他们所做的假设,答案是最正确的;-)。投票被否决,因为OP没有澄清(非常不寻常的)要求。由于不明确的要求,答案是广泛的猜测(对于他们所做的假设,答案是最正确的;-)。