Пользовательский JList Cell Renderer - Выбор ячейки?

Добрый день. Я довольно новичок в 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;
        }
    }
}

0 ответов

Другие вопросы по тегам