Trying science morning.
but no success.
I posted codes that can have problems please help me.
This Is output. Instead of an Image, it shows this text.
TheModel.java javaclass --->(I think the problem is in here).
package junk.yard.management.creative.system;
public class TheModel extends AbstractTableModel {
private String[] columns;
private Object[][] rows;
public TheModel() {
}
public TheModel(Object[][] data, String[] columnName) {
this.rows = data;
this.columns = columnName;
}
@Override
public Class getColumnClass(int column) {
// 4 is the index of the column image
if (column == 3) {
return Icon.class;
} else {
return getValueAt(0, column).getClass();
}
}
@Override
public int getRowCount() {
return this.rows.length;
}
@Override
public int getColumnCount() {
return this.columns.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return this.rows[rowIndex][columnIndex];
}
@Override
public String getColumnName(int col) {
return this.columns[col];
}
}
Code in Jframe -->(I think the problem is in here)........
public void populateJTable(){
MyQuery mq = new MyQuery();
ArrayList<Product2> list = mq.BindTable();
String[] columnName = {"Sr. No.","Name","Type","Image"};
Object[][] rows = new Object[list.size()][4];
for(int i = 0; i < list.size(); i++){
if(list.get(i).getMyImage() != null){
rows[i][0] = list.get(i).getID();
rows[i][1] = list.get(i).getName();
rows[i][2] = list.get(i).getType();
javax.swing.ImageIcon image = new javax.swing.ImageIcon(new javax.swing.ImageIcon(list.get(i).getMyImage()).getImage()
.getScaledInstance(180, 180, Image.SCALE_SMOOTH) );
rows[i][3] = image;
}
else{
rows[i][3] = null;
}
}
TheModel model = new TheModel(rows, columnName);
jTable1.setModel(model);
jTable1.setRowHeight(180);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(180);
}
this is my jTable designing code. DarkTable.java javaclass --->
package tabledark;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;
public class TableDark extends JTable {
private TableDarkHeader header;
private TableDarkCell cell;
public TableDark() {
header = new TableDarkHeader();
cell = new TableDarkCell();
getTableHeader().setDefaultRenderer(header);
getTableHeader().setPreferredSize(new Dimension(0, 35));
setDefaultRenderer(Object.class, cell);
setRowHeight(40);
}
public void setColumnAlignment(int column, int align) {
header.setAlignment(column, align);
}
public void setCellAlignment(int column, int align) {
cell.setAlignment(column, align);
}
public void setColumnWidth(int column, int width) {
getColumnModel().getColumn(column).setPreferredWidth(width);
getColumnModel().getColumn(column).setMinWidth(width);
getColumnModel().getColumn(column).setMaxWidth(width);
getColumnModel().getColumn(column).setMinWidth(10);
getColumnModel().getColumn(column).setMaxWidth(10000);
}
public void fixTable(JScrollPane scroll) {
scroll.setVerticalScrollBar(new ScrollBarCustom());
JPanel panel = new JPanel();
panel.setBackground(new Color(30, 30, 30));
scroll.setCorner(JScrollPane.UPPER_RIGHT_CORNER, panel);
scroll.getViewport().setBackground(new Color(30, 30, 30));
scroll.setBorder(BorderFactory.createLineBorder(new Color(60, 60, 60), 2));
}
private class TableDarkHeader extends DefaultTableCellRenderer {
private Map<Integer, Integer> alignment = new HashMap<>();
public void setAlignment(int column, int align) {
alignment.put(column, align);
}
@Override
public Component getTableCellRendererComponent(JTable jtable, Object o, boolean bln, boolean bln1, int i, int i1) {
Component com = super.getTableCellRendererComponent(jtable, o, bln, bln1, i, i1);
com.setBackground(new Color(30, 30, 30));
com.setForeground(new Color(200, 200, 200));
com.setFont(com.getFont().deriveFont(Font.BOLD, 25));
if (alignment.containsKey(i1)) {
setHorizontalAlignment(alignment.get(i1));
} else {
setHorizontalAlignment(JLabel.LEFT);
}
return com;
}
}
private class TableDarkCell extends DefaultTableCellRenderer {
private Map<Integer, Integer> alignment = new HashMap<>();
public void setAlignment(int column, int align) {
alignment.put(column, align);
}
@Override
public Component getTableCellRendererComponent(JTable jtable, Object o, boolean bln, boolean bln1, int row, int column) {
Component com = super.getTableCellRendererComponent(jtable, o, bln, bln1, row, column);
if (isCellSelected(row, column)) {
if (row % 2 == 0) {
com.setBackground(new Color(33, 103, 153));
} else {
com.setBackground(new Color(29, 86, 127));
}
} else {
if (row % 2 == 0) {
com.setBackground(new Color(50, 50, 50));
} else {
com.setBackground(new Color(30, 30, 30));
}
}
com.setForeground(new Color(200, 200, 200));
setBorder(new EmptyBorder(0, 5, 0, 5));
if (alignment.containsKey(column)) {
setHorizontalAlignment(alignment.get(column));
} else {
setHorizontalAlignment(JLabel.LEFT);
}
return com;
}
}
}
I think the problem is in here please look at it
@Override
public Component getTableCellRendererComponent(JTable jtable, Object o, boolean bln, boolean bln1, int row, int column) {
Component com = super.getTableCellRendererComponent(jtable, o, bln, bln1, row, column);
if (isCellSelected(row, column)) {
if (row % 2 == 0) {
com.setBackground(new Color(33, 103, 153));
} else {
com.setBackground(new Color(29, 86, 127));
}
} else {
if (row % 2 == 0) {
com.setBackground(new Color(50, 50, 50));
} else {
com.setBackground(new Color(30, 30, 30));
}
}
com.setForeground(new Color(200, 200, 200));
setBorder(new EmptyBorder(0, 5, 0, 5));
if (alignment.containsKey(column)) {
setHorizontalAlignment(alignment.get(column));
} else {
setHorizontalAlignment(JLabel.LEFT);
}
return com;
}
}