自定义JList单元格渲染器 - 单元格选择?

时间:2016-08-26 08:39:49

标签: java swing jlist listcellrenderer

美好的一天。 我对CellRenderer和其他东西很新,我还在阅读很多内容。现在,我遇到了一些我不确定如何工作的事情。通过将JPanel设置为自定义JList,我可以将CellRenderer放入jPanel。但这是百万美元的问题:我如何与控件互动?

我的意思是,我希望能够右键单击包含import java.awt.CardLayout; import javax.swing.JLabel; import javax.swing.JPanel; public class cellTest extends JPanel{ JLabel label; public cellTest(){ buildInterface(); } private void buildInterface(){ label = new JLabel(); setLayout(new CardLayout()); add(label); } public void setText(String text){ String pre = "<html><body style='width: 200px;'>"; label.setText(pre+text); } } 的单元格, 右键单击以显示某些操作,然后突出显示所选行。

我怎样才能做到这一点?

继承人是我的代码:

    import Read.Medicine_Cell;
    import java.awt.CardLayout;
    import java.awt.Component;
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JScrollPane;

public class testjava {
    public static void main(String args[]){
        JFrame jf = new JFrame();
        jf.setSize(500, 500);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLayout(new CardLayout());

        JList list = new JList();
        DefaultListModel dlm = new DefaultListModel();

        dlm.addElement("This is a test");
        dlm.addElement("I wanna know if it works");
        dlm.addElement("Pardon if im not that good yet");
        dlm.addElement("or my problem is basic");

        list.setModel(dlm);
        list.setCellRenderer(new MyCellRenderer());
        jf.add(new JScrollPane(list));
        jf.show();
    }
    static class MyCellRenderer extends DefaultListCellRenderer{
        final cellTest cellx = new cellTest();
        @Override
        public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean hasFocus){
            final String text = (String) value;
            cellx.setText(text);
            return cellx;
        }
    }
}

第二部分:

files = glob.glob('/tmp/image/*.png')

0 个答案:

没有答案