1

jtableのセルにいくつかのアイコンを入れていますが、問題は背景色をテーブルの背景色に変更していることです....行の背景色に変更したい...そして選択しても表示されません選択...これが私のコードで、アイコンを設定する方法です....

 Users user;
 ConsoleUsersListTbl.getColumnModel().getColumn(1).setCellRenderer(new ImageRender());


    DefaultTableModel userTableModel = (DefaultTableModel) ConsoleUsersListTbl.getModel();

    for (int i = 0; i < userList.size()-1; i++) {

        user = userList.get(i);
        javax.swing.ImageIcon image_icon = new javax.swing.ImageIcon(user.getUser_image());
        if (image_icon.getIconWidth() > 32 || image_icon.getIconWidth() > 32) {
            InputStream in = new ByteArrayInputStream(user.getUser_image());
            BufferedImage buff_image;
            try {
                buff_image = ImageIO.read(in);
                int type = buff_image.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : buff_image.getType();
                BufferedImage resizedImage = resizeImage(buff_image, type);

                image_icon.setImage(resizedImage);
                userTableModel.setValueAt(image_icon, i, 1);

            } catch (IOException ex) {
                Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            userTableModel.setValueAt(image_icon, i, 1);
        }

そして、これがアウトプットです...... ここに画像の説明を入力

ここの Edit1 は私の Image Render クラスです。setOpaque を true にすると、アイコンが白くなります。

public class ImageRender extends  DefaultTableCellRenderer {
JLabel lable = new JLabel();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    lable.setIcon((ImageIcon)value);
    lable.setOpaque(true);
    return lable;
}
}
4

1 に答える 1

2

ここで説明し、ここでも説明されているように、カスタム セル レンダラーを実装する必要があると思います。レンダラーは、現在のセルがフォーカスまたは選択されている場合に情報にアクセスできるため、背景、前景、さらにはコンテンツを自由に調整できます。コンポーネントは不透明 (独自の背景を持つ) か、そうでない (親の背景または他のコンテンツが透けて見える) 場合があることに注意してください。これはsetOpaque(boolean)によって制御されます。

于 2013-01-04T07:31:05.820 に答える