1: 테이블(JTable):
1.기본 개념:
테이블(JTable)은 Swing에 새로 추가된 구성요소로 주로 데이터를 테이블 형식으로 표시하는 데 사용됩니다. 큰 데이터 블록을 표시하는 간단한 메커니즘을 제공합니다.
2. 일반적으로 사용되는 건설 방법:
* JTable(): 시스템 기본 모델을 사용하여 JTable 인스턴스를 생성합니다.
* JTable(int numRows, int numColumns): DefaultTableModel을 사용하여 행과 열을 지정하는 빈 테이블을 만듭니다.
* JTable(Object[ ][ ] rowData,Object[ ][ ] columnNames): 2차원 데이터를 표시하는 테이블을 생성합니다.
테이블 열 이름 배열과 테이블 데이터 배열을 사용하여 테이블을 직접 생성할 수 있습니다.
* JTable(TableModel dm): 데이터 스키마와 기본 필드 스키마를 지정하는 JTable 인스턴스를 생성합니다.
데이터 모델 클래스의 객체는 일반적으로 데이터를 저장하는 데 사용되며 테이블 모델은 테이블 열 이름 배열과 테이블 데이터 배열을 통해 생성됩니다.
3. 일반적으로 사용되는 방법:
4. 포괄적인 사례:
코드 1:
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JTableDemo1은 JFrame을 확장합니다.
//테이블 정의
JTable 테이블;
//스크롤 막대 패널 정의(테이블을 스크롤 가능하게 만들기 위해)
JScrollPane 스크롤Pane;
//데이터 모델 클래스의 객체 정의(데이터 저장에 사용),
DefaultTableModel 테이블모델;
공개 JTableDemo1() {
감독자();
setTitle("테이블 모델 및 테이블");
scrollPane = new JScrollPane();
//테이블 컬럼명 배열 정의
String[] 컬럼 이름 = { "A", "B", "C" };
//테이블 데이터 배열 정의
String[][] tableValues = { { "A1", "B1","C1" }, { "A2", "B2","C2" },
{ "A3", "B3", "C3" }, { "A4", "B4", "C4" } };
//테이블 열 이름과 테이블 데이터를 지정하는 테이블 모델 클래스의 객체를 생성합니다.
tableModel = new DefaultTableModel(tableValues,columnNames);
//지정된 테이블 모델의 테이블을 생성합니다.
table = new JTable(tableModel);
//RowSorter 설정(RowSorter는 JTable의 정렬 및 필터링을 제공하는 데 사용됩니다.)
table.setRowSorter(new TableRowSorter<DefaultTableModel>(tableModel));
scrollPane.setViewportView(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
setBounds(300, 200, 400, 300);
setVisible(참);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
공개 정적 무효 메인(문자열 인수[]) {
새로운 JTableDemo1();
}
}
스크린샷 1:
코드 2:
다음과 같이 코드 코드를 복사합니다.
import java.awt.*;
import javax.swing.*;
공개 클래스 JTableDemo3 {
JFrame 프레임;
JPanel 패널;
JScrollPane scrollPane1, scrollPane2, scrollPane3;
JTable jtable1, jtable2, jtable3;
공개 JTableDemo3() {
프레임 = new JFrame("JTableDemo");
jtable1 = new JTable(8, 6);
final Object[] columnNames = { "이름", "성별", "집 주소", // 열 이름은 final로 수정하는 것이 가장 좋습니다.
"전화번호", "생일", "직업", "소득", "결혼여부", "연애여부" };
객체[][] rowData = {
{ "ddd", "남성", "난징, 장쑤성", "1378313210", "1985-03-24", "학생", "기생충",
"미혼", "아님" },
{ "eee", "여성", "난징, 장쑤성", "13645181705", "xx/xx/1985", "튜터", "알 수 없음",
"미혼", "아닌 것 같아요" },
{ "fff", "남성", "난징, 장쑤성", "13585331486", "12/08/1985", "자동차 세일즈맨",
"잘 모르겠음", "미혼", "예" },
{ "ggg", "여성", "난징, 장쑤성", "81513779", "xx/xx/1986", "호텔 승무원",
"결정되었으나 알려지지 않았다", "미혼", "예" },
{ "hhh", "남성", "난징, 장쑤성", "13651545936", "xx/xx/1985", "학생", "망명 중",
"미혼", "수차례 이별한 뒤는 아니다" } };
jtable2 = new JTable(rowData, columnNames);
jtable3 = new JTable(rowData,columnNames);
jtable3.setPreferredScrollableViewportSize(new Dimension(600, 100));//테이블 크기 설정
jtable3.setRowHeight(30);//각 행의 높이를 20으로 설정
jtable3.setRowHeight(0, 20);//1행의 높이를 15로 설정
jtable3.setRowMargin(5);//인접한 두 셀 행 사이의 거리를 설정합니다.
jtable3.setRowSelectionAllowed(true); // 선택 가능 여부를 설정합니다. 기본값은 false입니다.
jtable3.setSelectionBackground(Color.white);//선택한 행의 배경색 설정
jtable3.setSelectionForeground(Color.red);//선택한 행의 전경색을 설정합니다.
jtable3.setGridColor(Color.red);//그리드선 색상 설정
jtable3.selectAll();//모든 행 선택
jtable3.setRowSelectionInterval(0, 2);//초기 선택 행을 설정합니다. 여기서 행 1~3은 모두 선택된 상태입니다.
jtable3.clearSelection();//선택 취소
jtable3.setDragEnabled(false); //이해가 안되네요
jtable3.setShowGrid(true); // 그리드 선 표시 여부
jtable3.setShowHorizontalLines(true); // 수평 그리드 선 표시 여부
jtable3.setShowVerticalLines(true); // 수직 격자선 표시 여부
jtable3.setValueAt("tt", 0, 0);//특정 셀의 값을 설정합니다. 이 값은 객체입니다.
jtable3.doLayout();
jtable3.setBackground(Color.시안색);
// 스크롤 효과를 얻으려면 JTable을 JScrollPane에 추가하는 것이 가장 좋습니다.
scrollPane1 = new JScrollPane(jtable1);
scrollPane2 = new JScrollPane(jtable2);
scrollPane3 = new JScrollPane(jtable3);
패널 = new JPanel(new GridLayout(0, 1));
panel.setPreferredSize(new Dimension(600, 400));
panel.setBackground(Color.black);
panel.add(scrollPane1);
panel.add(scrollPane2);
panel.add(scrollPane3);
프레임.setContentPane(패널);
프레임.팩();
프레임.setVisible(true);
프레임.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
공개 정적 무효 메인(String[] args) {
새로운 JTableDemo3();
}
}
스크린샷 2:
2: 트리(JTree):
1.기본 개념:
트리(JTree): 계층적 데이터 세트를 윤곽선으로 표시하는 컨트롤입니다.
2. 일반적으로 사용되는 건설 방법:
JTree(): 샘플 모델과 함께 JTree를 반환합니다.
JTree(Object[] value): 배열의 각 요소를 표시되지 않는 새 루트 노드의 하위 노드로 지정하는 JTree를 반환합니다.
//이 생성자만이 여러 루트 노드를 생성할 수 있습니다.
JTree(Object[] value): 배열의 각 요소를 표시되지 않는 새 루트 노드의 하위 노드로 지정하는 JTree를 반환합니다.
JTree(TreeNode 루트): 지정된 TreeNode를 루트로 사용하여 루트 노드를 표시하는 JTree를 반환합니다.
JTree(TreeNode root, boolean AskAllowsChildren): 지정된 TreeNode를 루트로 사용하여 JTree를 반환합니다.
지정된 방식으로 루트 노드를 표시하고 해당 노드가 리프 노드인지 여부를 확인합니다. (하위 노드를 추가하려면 true로 설정한 다음 하위 노드를 추가하세요.)
3. 코드 데모:
예시 1:
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JTreeDemo1 {
JFrame f;
박스박스;
JTree jTree1,jTree2;
공개 JTreeDemo1()
{
f = new JFrame(" JTreeDemo1 ");
box = Box.createHorizontalBox(); //Box 클래스 객체 생성
jTree1 = 새로운 JTree();
jTree2 = 새로운 JTree();
//이 구성요소에 임의의 키/값을 추가합니다.
jTree1.putClientProperty("JTree.lineStyle", "Angled");
//Box 컨테이너에 스크롤 패널 추가
box.add(new JScrollPane(jTree1), BorderLayout.WEST);
box.add(new JScrollPane(jTree2), BorderLayout.EAST);
f.getContentPane().add(box, BorderLayout.CENTER);
f.setSize(300, 240);
//f.팩();
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
공개 정적 무효 메인(String[] args) {
새로운 JTreeDemo1();
}
}
스크린샷 1:
예 2:
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JTreeDemo2 {
JFrame f;
JPanel p;
JTree jTree1,jTree2,jTree3,jTree4,jTree5,jTree6,jTree7;
공개 JTreeDemo2() {
f = new JFrame(" JTreeDemo2 ");
// 생성자: JTree()
jTree1 = 새로운 JTree();
// 생성자: JTree(Object[] 값)
Object[] 문자 = { " a ", " b ", " c ", " d ", " e " };
jTree2 = new JTree(문자);
// 생성자: JTree(TreeNode 루트)(TreeNode 비어 있음)
//빈 노드로 트리 생성
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode() // 트리 노드 정의
jTree3 = new JTree(node1); // 이 트리 노드를 매개변수로 사용하여 JTree 생성자를 호출하여 루트 노드가 있는 트리를 생성합니다.
// 생성자: JTree(TreeNode 루트) (TreeNode가 비어 있지 않다는 점을 제외하고 위와 동일)
// 루트 노드가 있는 트리 생성
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(" Color ");
jTree4 = new JTree(node2); // 노드는 색상을 지정할 수 없습니다. 기본값은 흰색이고 검정색 텍스트입니다.
jTree4.setBackground(Color.lightGray);
// 생성자: JTree(TreeNode 루트, 부울
// AskAllowsChildren) (위와 동일하지만 TreeNode가 다릅니다)
// DefaultMutableTreeNode 클래스를 사용하여 먼저 루트 노드가 있는 트리를 생성하고 하위 노드를 추가하도록 설정한 다음 하위 노드를 추가합니다.
DefaultMutableTreeNode color = new DefaultMutableTreeNode(" Color ",
진실);
DefaultMutableTreeNode grey = new DefaultMutableTreeNode(" 회색 ");
grey.add(new DefaultMutableTreeNode(" Lightgray "));
grey.add(new DefaultMutableTreeNode(" Darkgray "));
color.add(회색);
color.add(new DefaultMutableTreeNode(" Red "));
color.add(new DefaultMutableTreeNode(" 녹색 "));
jTree5 = new JTree(색상);
// 생성자: JTree(TreeNode 루트) (TreeNode가 비어 있지 않다는 점을 제외하고 위와 동일)
// 노드를 하나씩 추가하여 트리를 생성합니다.
DefaultMutableTreeNode 생물학 = 새로운 DefaultMutableTreeNode(" 생물학 ");
DefaultMutableTreeNode 동물 = 새로운 DefaultMutableTreeNode(" 동물 ");
DefaultMutableTreeNode 포유류 = 새로운 DefaultMutableTreeNode(" 포유류 ");
DefaultMutableTreeNode 말 = 새로운 DefaultMutableTreeNode(" 말 ");
포유류.추가(말);
동물.추가(포유류);
생물학.add(동물);
jTree6 = 새로운 JTree(생물학);
말.isLeaf();
말.isRoot();
//생성자:JTree(TreeModel newModel)
// DefaultMutableTreeNodel 클래스를 사용하여 노드를 정의한 다음 이 노드를 매개변수로 사용하여 DefaultTreeMode를 사용하여 노드를 정의합니다.
// 트리 모델을 생성한 다음 JTree 생성자를 사용하여 트리를 생성합니다.
DefaultMutableTreeNode root = new DefaultMutableTreeNode(" Root1 ");
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(" Child1 ");
DefaultMutableTreeNode child11 = new DefaultMutableTreeNode(" Child11 ");
DefaultMutableTreeNode child111 = 새로운 DefaultMutableTreeNode(
" Child111 ");
루트.추가(child1);
child1.add(child11);
child11.add(child111);
DefaultTreeModel 모델 = 새로운 DefaultTreeModel(루트);
jTree7 = 새로운 JTree(모델);
p = 새로운 JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.setPreferredSize(new Dimension(700, 400));
// JTree는 JScrollPane에 배치되어야 합니다.
p.add(new JScrollPane(jTree1));
p.add(new JScrollPane(jTree2));
p.add(new JScrollPane(jTree3));
p.add(new JScrollPane(jTree4));
p.add(new JScrollPane(jTree5));
p.add(new JScrollPane(jTree6));
p.add(new JScrollPane(jTree7));
f.setContentPane(p);
f.팩();
f.setLocation(300, 200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
공개 정적 무효 메인(String[] args) {
새로운 JTreeDemo2();
}
}
스크린샷 2: