package com;
import javax.swing.Icon;
public class ImgsNText {
private String name;
private Icon img;
public ImgsNText(String text,Icon icon){
this.name = text;
this.img = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Icon getImg() {
return img;
}
public void setImg(Icon img) {
this.img = img;
}
}
Это установщик получения для моего средства визуализации списка, которое имеет изображение значка и имя строки.
package com;
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class Renderer extends DefaultListCellRenderer implements ListCellRenderer<Object> {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
ImgsNText is = (ImgsNText) value;
setText(is.getName());
setIcon(is.getImg());
if(isSelected){
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}else{
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(true);
setFont(list.getFont());
return this;
}
}
Это класс средства визуализации списка, который расширяет DefaultListRenderer, который устанавливает свойства для ячейки списка, когдаоно выбрано или не выбрано
package com;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class ListMain extends javax.swing.JFrame {
DefaultListModel dm = new DefaultListModel();
public ListMain() {
initComponents();
}
private void populate(){
dm.clear();
dm.addElement(new ImgsNText("Tejack", new ImageIcon("C:\\Users\\tejas\\Documents\\NetBeansProjects\\ChatAppImages\\send.png")));
dm.addElement(new ImgsNText("kcajet", new ImageIcon("C:\\Users\\tejas\\Documents\\NetBeansProjects\\ChatAppImages\\send.png")));
jList1.setCellRenderer(new Renderer());
jList1.setModel(dm);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList<>();
populatebtn = new javax.swing.JButton();
clearbtn = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jList1.setBorder(javax.swing.BorderFactory.createMatteBorder(5, 5, 5, 5, new java.awt.Color(0, 0, 153)));
jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jList1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jList1MouseClicked(evt);
}
});
jScrollPane1.setViewportView(jList1);
populatebtn.setText("Populate");
populatebtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
populatebtnActionPerformed(evt);
}
});
clearbtn.setText("Clear");
clearbtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearbtnActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(58, 58, 58)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 251, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(84, 84, 84)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(populatebtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(clearbtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(101, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 416, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(201, 201, 201)
.addComponent(populatebtn)
.addGap(44, 44, 44)
.addComponent(clearbtn)))
.addContainerGap(54, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void populatebtnActionPerformed(java.awt.event.ActionEvent evt) {
populate();
}
private void clearbtnActionPerformed(java.awt.event.ActionEvent evt) {
dm.clear();
jList1.setModel(dm);
}
private void jList1MouseClicked(java.awt.event.MouseEvent evt) {
JOptionPane.showMessageDialog(null,((ImgsNText)jList1.getSelectedValue()).getName());
//here I get error ImgsNText cannot be castesd to string.
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ListMain().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton clearbtn;
private javax.swing.JList<String> jList1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton populatebtn;
// End of variables declaration
}
Я хочу отобразить имя выделенной ячейки, но это выдает ошибку «несовместимые типы: java.lang.String не может быть преобразовано в chat.ImgsNText». Яновичок в программировании, пожалуйста, помогите ....