Hallo,
ich einer JList als Items ein JPanel zugewiesen. Auf JPanel habe ich 2 TextArea mit einem ScrollPane. Die Darstellung klappt soweit, nur kann ich nicht vernünftig scrollen, wenn ich die TextArea auf der JList anspreche.
Mein CellRenderer zur Darstellung des JPanels
Klasse zur Erstellung der Items
Die Items werden der JList hinzugefügt z.B. mit:
ich einer JList als Items ein JPanel zugewiesen. Auf JPanel habe ich 2 TextArea mit einem ScrollPane. Die Darstellung klappt soweit, nur kann ich nicht vernünftig scrollen, wenn ich die TextArea auf der JList anspreche.
Mein CellRenderer zur Darstellung des JPanels
Java:
public class CellRendererBild extends JPanel implements ListCellRenderer {
/**
*
*/
private static final long serialVersionUID = 6046489657382078802L;
private JTextArea txtrBildname = null;
private JTextArea txtrBildbeschreibung = null;
private JLabel lblId = null;
private JLabel lblBild = null;
private JScrollPane scrollPaneBildname;
private JScrollPane scrollPaneBeschreibung;
public CellRendererBild() {
lblBild = new JLabel("");
scrollPaneBildname = new JScrollPane();
scrollPaneBeschreibung = new JScrollPane();
lblId = new JLabel("Id");
GroupLayout groupLayout = new GroupLayout(this);
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lblBild, GroupLayout.PREFERRED_SIZE, 160, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(scrollPaneBildname, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(scrollPaneBeschreibung)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(lblId)
.addContainerGap())
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(scrollPaneBeschreibung, GroupLayout.PREFERRED_SIZE, 79, GroupLayout.PREFERRED_SIZE)
.addComponent(lblBild)
.addComponent(scrollPaneBildname, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE))
.addContainerGap())
.addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
.addComponent(lblId)
.addGap(31))))
);
txtrBildbeschreibung = new JTextArea();
txtrBildbeschreibung.setEditable(false);
txtrBildbeschreibung.setLineWrap(true);
txtrBildbeschreibung.setText("jksdfjksd klsd klf snkldfnkl ssdnkl nklsddfkl ssdf nklsd nklsd nklsd nklsd nklsd nklsd nkldf sdnkl nklsd nklsd nklsdf nklsd nklsd nklsd nklsd sdnkl sdnkl sdnkl sdnkl sdnkl sdnkl sdfnsdfnkl sd nklsd");
scrollPaneBeschreibung.setViewportView(txtrBildbeschreibung);
JLabel lblBildbeschreibung = new JLabel("Bildbeschreibung");
lblBildbeschreibung.setFont(new Font("Tahoma", Font.BOLD, 11));
scrollPaneBeschreibung.setColumnHeaderView(lblBildbeschreibung);
txtrBildname = new JTextArea();
txtrBildname.setEditable(false);
txtrBildname.setLineWrap(true);
txtrBildname.setText(" jhasdjbksajk as asnkl asdnklas nklas ankl as klas ankl sas ");
scrollPaneBildname.setViewportView(txtrBildname);
JLabel lblBildname = new JLabel("Bildname");
lblBildname.setFont(new Font("Tahoma", Font.BOLD, 11));
scrollPaneBildname.setColumnHeaderView(lblBildname);
setLayout(groupLayout);
}
@Override
public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean hasCellFokus) {
txtrBildbeschreibung.setText(((ListItem)value).getTxtrBildbeschreibung());
txtrBildname.setText(((ListItem)value).getTxtrBildname());
lblId.setText(((ListItem)value).getLblId());
lblBild.setIcon(((ListItem)value).getIcon());
if(hasCellFokus) {
setBackground(Color.lightGray);
}
else {
setBackground(list.getBackground());
}
return this;
}
}
Klasse zur Erstellung der Items
Java:
public class ListItem {
private ImageIcon icon = null;
private String bildname = null;
private String bildbeschreibung = null;
private String id = null;
public ListItem(String iconPfad, String bildname, String bildbeschreibung,
String id) {
this.icon = BildLaden.loadImageAsThumbNailForSearch(new File(iconPfad), 80);
this.bildname = bildname;
this.bildbeschreibung = bildbeschreibung;
this.id = id;
}
public ImageIcon getIcon() {
return icon;
}
public String getTxtrBildname() {
return bildname;
}
public String getTxtrBildbeschreibung() {
return bildbeschreibung;
}
public String getLblId() {
return id;
}
}
Die Items werden der JList hinzugefügt z.B. mit:
Java:
DefaultListModel listmodel = new DefaultListModel();
JList list = new JList(listmodel);
listmodel.addElemente(new ListItem("./pics/pz.jpg", "Kirche", String "Am Berg", "5")