개발속이야기/Java

JTable DefaultTableCellRenderer 예제

스토리지기 2017. 12. 28. 14:20

package com.oraclejava.exam3;


import java.awt.BorderLayout;

import java.awt.Dimension;

import java.text.SimpleDateFormat;

import java.util.Date;


import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;


public class JaFrm7 extends JFrame {


private static final String[] HEADER = { "이름", "생년월일", "성별" };


public JaFrm7(String sTitle) {

setTitle(sTitle);

setBounds(10,10,370,120);

DefaultTableModel tm = new DefaultTableModel(HEADER, 0/*row count*/);

JTable jTable = new JTable(tm);

JScrollPane jScrollPane = new JScrollPane(jTable);

jScrollPane.setPreferredSize(new Dimension(350, 70));

JPanel jPanel = new JPanel();

jPanel.add(jScrollPane);

add(jPanel, BorderLayout.CENTER);

Object[][] data = {

{"홍길순", "19520202", "Female",},

{"홍길동", "19530124", "male", },

{"홍길찬", "19620226", "male", },

{"홍길영", "19541205", "Female", },

{"홍길선", "19651152", "Female", },

};

// 행추가

for(int i=0; i<data.length; i++) {

tm.addRow(data[i]);

}

// 열추가

tm.addColumn("나이(만)");

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

int nToday = Integer.parseInt(sdf.format(date));

for(int i=0;i<data.length;i++) {

String sYMD = (String)tm.getValueAt(i,1);

int nYmd = Integer.parseInt(sYMD);

int nYear = (nToday - nYmd) / 10000;

tm.setValueAt(nYear, i, 3);

}

jTable.setDefaultRenderer(Object.class, new MyTableCellRender());

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true); // 마지막에

}


public static void main(String[] args) {

// TODO Auto-generated method stub

JaFrm7 frm = new JaFrm7("JTable");


}

}


-------------------------------------------------------------------------------
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;
}

}



'개발속이야기 > Java' 카테고리의 다른 글

jdbc 기본 예제  (0) 2017.12.28
JTable 재정의 예제  (0) 2017.12.28
JTable 예제  (0) 2017.12.28
JFrame 이미지 선택 테스트  (0) 2017.12.28
JFrame Image 이미지 예제  (0) 2017.12.28