TableModel 를 사용하여 구구단 출력하는 프로그램
JTable 클래스를 생성할 때 AbstractTableModel 클래스를 상속받아 구현된 클래스를 인자로 전달하여 각 테이블 셀에 데이터를 체울 때 사용한다. AbstractTableModel 클래스는 추상 클래스로 public int getColumnCount(), public int getRowCount(), public Object getValueAt(int row, int col) 메소드를 구현해야 한다.
View 클래스 : showMultiplication
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class ShowMultiplication extends JFrame {
private static final long serialVersionUID = 1L;
private int width = 600;
private int height = 200;
public ShowMultiplication() {
setTitle("Multiplication Table");
setSize(width, height);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GetMultiplicationTableModel model = new GetMultiplicationTableModel(2, 9);
JTable table = new JTable(model);
Container content = getContentPane();
content.add(new JScrollPane(table), BorderLayout.CENTER);
}
public static void main(String[] args) {
new ShowMultiplication();
}
}
TableModel 클래스 : GetMultiplicationTableModel
import javax.swing.table.AbstractTableModel;
public class GetMultiplicationTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private int start;
private int end;
public GetMultiplicationTableModel(int min, int max) {
this.start = min;
this.end = max;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return end-start+1;
}
@Override
public int getRowCount() {
return 8;
}
@Override
public Object getValueAt(int row, int col) {
int m = row + 2;
int n = start + col;
return n + " * " + m + " = " +n*m;
}
}
[위 코드의 실행 파일]