Swing

210826_JTable+JTextArea

요옫 2021. 8. 26. 17:31

public class JTable_01 extends JFrame{

 

Container cp;

JTable tb1,tb2,tb3;

JTextArea area;

 

 

public JTable_01(String title) {

 

super(title);

 

cp=this.getContentPane();

cp.setBackground(new Color(171,190,190));

this.setBounds(700,100,800,800); 

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.initDesign();

this.setVisible(true); 

}

 

 

public void initDesign() {

 

this.setLayout(new GridLayout(2, 2, 5, 5)); //그리드로 2행2열

 

 

//1번째 테이블 행,열 지정

tb1=new JTable(5,4);

this.add(new JScrollPane(tb1)); //this는 프레임인데 table 바로 못 올라옴,JScrollPane 안에 넣어서 올라와야 함

 

//2번째 테이블은 생성시 데이터 넣기

//행과 열 한번에 넣으려면 배열의 초기값 이용

String []title1= {"이름","나이","주소"};

String [][]data1= {

{"유재석","23","서울시 서초구"},{"박명수","30","강원도 원주시"},

{"강호동","44","경기도 김포시"}

        };  //다중배열

 

//string 두개를 테이블에 담기

tb2=new JTable(data1, title1);   //담을내용,제목

this.add(new JScrollPane(tb2));  //this는 프레임인데 table 바로 못 올라옴,JScrollPane 안에 넣어서 올라와야 함

 

//3번째 테이블 Model을 이용해서 생성..model은 추가,삭제 가능

DefaultTableModel model1=new DefaultTableModel(data1, title1);

tb3=new JTable(model1);

this.add(new JScrollPane(tb3));

 

//tb3에 추가가능..model 사용했기에 가능

String[] addData1= {"정준하","37","서울시 광진구"};

model1.addRow(addData1);

 

//벡터로 생성후 추가

Vector<String>addData2=new Vector<String>();  //벡터 string만을 담겠다

addData2.add("홍길동");

addData2.add("33");

addData2.add("서울시 종로구");

model1.addRow(addData2);

 

//출력창

area=new JTextArea();

this.add(area);

 

//jtable과 model 메서드 확인

//행 개수

int rowCount=tb3.getRowCount();

int rowCount2=model1.getRowCount();

 

area.append("tb3의 행 개수: "+rowCount+"\n");

area.append("tb3의 행 개수: "+rowCount+"\n");

 

//열 개수

int columnCount=tb3.getColumnCount();

 

area.append("tb3의 열 개수: "+columnCount+"\n");

 

area.append("1행 1열: "+tb3.getValueAt(1, 1)+"\n");

area.append("3행 2열: "+tb3.getValueAt(3, 2)+"\n");

area.append("3행 2열: "+model1.getValueAt(3, 2)+"\n"); //값 같음

 

//tb3에 마우스클릭 이벤트를 추가해서 area에 출력

tb3.addMouseListener(new MouseAdapter() {

});  //adapter는 메서드 꾸러미라서 원하는 거 뽑아 쓰면 됨

 

// @Override

// public void mouseClicked(MouseEvent e) {

//

// //클릭한 행번호 얻기

// int row=tb3.getSelectedRow();

//

// //클릭한 열번호 얻기

// int col=tb3.getSelectedColumn();

//

// //해당열,행에 있는 데이터를 얻어서 area에 출력

// area.append(row+","+col+"==>"+tb3.getValueAt(row, col));

//

// super.mouseClicked(e);

// }

}

 

 

public static void main(String[] args) {

 

new JTable_01("테이블");

}

}