0
JTable에 일부 데이터를 표시하려고합니다. 나는 특정 열의 배경색을 변경하는 것과는 별개로 모든 것이 명확한 Jtable을 만들었습니다. 사용자는 마지막 열에서 체크 박스를 선택합니다. 그것은 동적으로 작동해야합니다. 몇 가지 팁, 코드 등을 알려 주실 수 있습니까?하나의 열에서 체크 박스를 체크 한 후 동적으로 JTable의 행 배경색을 변경하는 방법은 무엇입니까?
JTable에 일부 데이터를 표시하려고합니다. 나는 특정 열의 배경색을 변경하는 것과는 별개로 모든 것이 명확한 Jtable을 만들었습니다. 사용자는 마지막 열에서 체크 박스를 선택합니다. 그것은 동적으로 작동해야합니다. 몇 가지 팁, 코드 등을 알려 주실 수 있습니까?하나의 열에서 체크 박스를 체크 한 후 동적으로 JTable의 행 배경색을 변경하는 방법은 무엇입니까?
이와 비슷한?
import java.awt.BorderLayout;
import java.util.Vector;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
public class JTableTest extends JFrame implements TableModel{
Vector<Object[]> lines = new Vector<Object[]>();
private String[] headers = {"String","Boolean"};
public JTableTest(){
for (int t = 0; t < 100; t++) lines.addElement(new Object[]{"Row "+t,Boolean.FALSE});
JPanel p = (JPanel)getContentPane();
p.setLayout(new BorderLayout());
JTable table = new JTable();
table.setDefaultRenderer(String.class, new MyRenderer());
p.add(new JScrollPane(table));
table.setModel(this);
p.setPreferredSize(new Dimension(400,200));
pack();
setVisible(true);
}
public static void main(String[] args){
new JTableTest();
}
@Override
public int getRowCount() {
return lines.size()+1;
}
@Override
public int getColumnCount() {
return headers.length;
}
@Override
public String getColumnName(int columnIndex) {
return headers[columnIndex];
}
@Override
public Class<?> getColumnClass(int col) {
if (col == 1) return Boolean.class;
return String.class;
}
@Override
public boolean isCellEditable(int row, int col) {
return col==1;
}
@Override
public Object getValueAt(int row, int col) {
return lines.elementAt(row)[col];
}
@Override
public void setValueAt(Object aValue, int row, int col) {
lines.elementAt(row)[col] = aValue;
}
@Override
public void addTableModelListener(TableModelListener l) {
}
@Override
public void removeTableModelListener(TableModelListener l) {
}
private class MyRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (lines.elementAt(row)[1] == Boolean.TRUE) c.setBackground(Color.orange);
else c.setBackground(table.getBackground());
table.repaint();
return c;
}
}
}
읽기 TbelCellRenderer 약 및 – StanislavL
이 당신을 도움이 될 수있는 설명 논리로 자신을 구현 .. http://stackoverflow.com/questions/15385114/jtable-color-row-and-cell-dynamically – AJJ