Приложение, над которым я работаю, требует использования JList, где каждый ListItem является меткой, за которой следует кнопка.
Я создал класс с элементом String для текстового поля и добавил объекты класса в Jlist.
Теперь для кнопки я реализовал пользовательский рендерер ячеек списка, который выглядит так:
public renderer()
{
text=new JLabel();
button=new JButton("Track");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Hey");
}
});
}
public Component getListCellRendererComponent(JList list, Object value, int index,boolean isSelected, boolean cellHasFocus)
{
it=(item)list.getModel().getElementAt(index);
text.setText(it.tex);
return this;
}
public void paintComponent(Graphics g)
{
this.add(text);
this.add(button);
this.setVisible(true);
}
public Dimension getpreferredSize(){
Font font=UIManager.getDefaults().getFont("JLabel.Font");
Graphics g=getGraphics();
FontMetrics fm=g.getFontMetrics(font);
return new Dimension(fm.stringWidth(it.tex)+button.getWidth(),fm.getHeight()>button.getWidth()?fm.getHeight():button.getWidth());
}
}
Но кнопка не реагирует, когда я нажимаю на нее. Что я пропустил?
Спасибо