package com.oraclejava.exam3;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class MyTable extends JTable {
public MyTable(DefaultTableModel tm) {
super(tm);
}
MyTableCellRender render1 = new MyTableCellRender(); //
MyTableCellRender2 render2 = new MyTableCellRender2(); // 이미지등
MyTableCellEditor editor1 = new MyTableCellEditor();
@Override
public TableCellEditor getCellEditor(int row, int column) {
// TODO Auto-generated method stub
//return super.getCellEditor(row, column);
TableCellEditor editor;
Object obj = this.getValueAt(row, column);
if(obj instanceof JComponent) {
editor = editor1;
}
else {
editor = super.getCellEditor(row, column);
}
return editor;
}
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
// TODO Auto-generated method stub
//return super.getCellRenderer(row, column);
TableCellRenderer render;
Object obj = this.getValueAt(row, column);
if(obj instanceof JComponent) {
render = render2;
}
else {
render = render1;
}
return render;
}
}
package com.oraclejava.exam3;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class MyTableCellRender extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// TODO Auto-generated method stub
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
System.out.println(
"row:"+row+",column:"+column+",column:"+column+
",selected:"+isSelected+",focused:"+hasFocus+
",value:"+value
);
// 선택한행을 red로
if(isSelected) {
this.setBackground(Color.RED);
}
else
{
this.setBackground(table.getBackground());
}
// 포커스 맞춘 셀은 노란색으로 변경
if(hasFocus) {
this.setBackground(Color.YELLOW);
}
// (1,1)셀은 파랑으로 변경
if(row==1 && column==1) {
this.setBackground(Color.BLUE);
}
return this;
}
}
---------------------------------------------------------------------------------------
package com.oraclejava.exam3;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class MyTableCellRender2 extends DefaultTableCellRenderer {
//행높이
private int rowHeight = 0;
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// TODO Auto-generated method stub
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
JComponent comp = (JComponent)value;
//가장 긴 컴포넌트의 맞춰 행의 높이를 조절
Dimension dimension = comp.getPreferredSize();
if(rowHeight < dimension.getHeight()) {
rowHeight = dimension.height;
table.setRowHeight(rowHeight);
}
return comp;
}
}
---------------------------------------------------------------------------------------
package com.oraclejava.exam3;
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
public class MyTableCellEditor extends AbstractCellEditor
implements TableCellEditor {
protected JComponent comp = null;
@Override
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return comp;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
comp = (JComponent)value;
return comp;
}
}
'개발속이야기 > Java' 카테고리의 다른 글
jdbc with JTable 예제 (0) | 2017.12.28 |
---|---|
jdbc 기본 예제 (0) | 2017.12.28 |
JTable DefaultTableCellRenderer 예제 (0) | 2017.12.28 |
JTable 예제 (0) | 2017.12.28 |
JFrame 이미지 선택 테스트 (0) | 2017.12.28 |