>  기사  >  Java  >  JTable을 사용하여 Java 테이블을 만드는 방법

JTable을 사용하여 Java 테이블을 만드는 방법

藏色散人
藏色散人원래의
2019-01-17 15:15:294902검색

Java는 Java의 Swing API 구성 요소를 사용하여 그래픽 사용자 인터페이스를 개발할 때 테이블을 생성할 수 있는 유용한 클래스 JTable을 제공합니다. 사용자가 데이터를 편집하거나 데이터를 보도록 허용할 수 있습니다. 테이블에는 실제로 데이터가 포함되어 있지 않습니다. 이는 순전히 표시 메커니즘일 뿐입니다. 참고: 모든 Swing GUI와 마찬가지로 JTable을 표시하려면 컨테이너를 생성해야 합니다.

배열을 사용하여 테이블 데이터 저장 JTable을 사용하여 Java 테이블을 만드는 방법

JTable 클래스에 데이터를 제공하는 간단한 방법은 두 개의 배열을 사용하는 것입니다. 첫 번째 배열은 문자열 배열에 열 이름을 저장합니다.

String[] columnNames = {"First Name", "Surname", "Country"
, "Event", "Place", "Time", "World Record" };

두 번째 배열은 테이블의 데이터를 저장하는 데 사용되는 2차원 개체 배열입니다. 예를 들어, 이 배열에는 6명의 올림픽 수영 선수가 포함되어 있습니다.

Object[][] data = {
{"César Cielo", "Filho", "Brazil", "50m freestyle",1 , "21.30", false },
{"Amaury", "Leveaux", "France", "50m freestyle", 2, "21.45", false },
{"Eamon", "Sullivan", "Australia", "100m freestyle", 2, "47.32", false },
{"Michael", "Phelps", "USA", "200m freestyle", 1, "1:42.96", false },
{"Ryan", "Lochte", "USA", "200m backstroke", 1, "1:53.94", true },
{"Hugues", "Duboscq", "France", "100m breaststroke", 3, "59.37", false }
};
여기서 핵심은 두 배열의 열 수가 동일한지 확인하는 것입니다.

JTable 구축

일단 데이터가 있으면 테이블을 만드는 것은 간단한 작업입니다. JTable 생성자를 호출하고 두 개의 배열을 전달하기만 하면 됩니다.

JTable table = new JTable(data, columnNames);

사용자가 모든 데이터를 볼 수 있도록 스크롤 막대를 추가할 수 있습니다. 이렇게 하려면 해당 JTable을 JScrollPane에 배치합니다.

JScrollPane tableScrollPane = new JScrollPane(table);
이제 테이블이 표시되면 데이터의 열과 행이 표시되고 위아래로 스크롤할 수 있습니다.

JTable 개체는 대화형 테이블을 제공합니다. 셀을 두 번 클릭하면 내용을 편집할 수 있습니다. 단, 편집 내용은 GUI에만 영향을 미치고 기본 데이터에는 영향을 미치지 않습니다. (데이터 변경 사항을 처리하려면 이벤트 리스너를 구현해야 합니다.)

열 너비를 변경하려면 열 헤더 가장자리 위로 마우스를 가져간 다음 앞뒤로 드래그하세요. 열 순서를 변경하려면 열 머리글을 길게 클릭한 다음 새 위치로 드래그하세요.

열 정렬

행 정렬 기능을 추가하려면 setAutoCreateRowSorter 메서드를 호출하세요.

table.setAutoCreateRowSorter(true);
#🎜🎜 #이런경우 메서드가 true로 설정되어 있으면 열 머리글을 클릭하여 해당 열 아래의 셀 내용을 기준으로 행을 정렬할 수 있습니다.

테이블 모양 변경

그리드 선의 가시성을 제어하려면 다음 setShowGrid 메서드를 사용하세요.

table.setShowGrid(true);
#🎜 🎜#테이블 색상을 완전히 변경하려면 setBackground 및 setGridColor 메소드를 사용하세요.

table.setGridColor(Color.YELLOW);
table.setBackground(Color.CYAN);

기본적으로 테이블의 열 너비는 동일합니다. 테이블이 있는 컨테이너의 크기를 조정할 수 있는 경우 열의 너비가 확장되거나 축소되고 컨테이너가 더 커지거나 작아집니다. 사용자가 열 크기를 조정하면 오른쪽 열의 너비가 새 열 크기에 맞게 변경됩니다. setPreferredWidth 메소드나 열을 사용하여 초기 열 너비를 설정할 수 있습니다. TableColumn 클래스를 사용하여 먼저 열에 대한 참조를 가져온 다음 setPreferredWidth 메서드를 사용하여 크기를 설정합니다. 세 가지 방법 중 하나로 테이블 행을 선택합니다.

단일 행을 선택하려면 다음에서 테이블 셀을 클릭합니다. 그 행.

연속된 여러 행을 선택하려면 마우스를 여러 행 위로 드래그하거나 Shift Cell을 누른 상태에서 표 셀을 클릭하세요.

연속되지 않은 여러 행을 선택하려면 Ctrl 키(Mac의 경우 Command 키)를 누른 상태에서 표 셀을 클릭하세요.

테이블 모델 사용

편집할 수 있는 간단한 문자열 기반 테이블을 원한다면 테이블 데이터처럼 몇 가지 배열을 사용하세요. 매우 유용합니다. 우리가 만든 데이터 배열을 보면 여기에 포함된 다른 데이터 유형은 문자열입니다. Place 열에는 int가 포함되고 World Record 열에는 부울이 포함됩니다. 그러나 두 열 모두 문자열로 표시됩니다. 이 동작을 변경하려면 테이블 모델을 만듭니다.

테이블 모델은 테이블에 표시될 데이터를 관리합니다. 테이블 모델을 구현하려면 AbstractTableModel 클래스를 확장하는 클래스를 생성하면 됩니다. JTable 객체에서 데이터를 조작합니다. AbstractTableModel을 사용하도록 클래스를 확장하는 경우 getRowCount, getColumnCount 및 getValueAt 메소드만 구현하면 됩니다.

위의 5가지 메서드를 구현하는 새 클래스를 만듭니다.

TableColumn eventColumn = table.getColumnModel().getColumn(3);
eventColumn.setPreferredWidth(150);
TableColumn placeColumn = table.getColumnModel().getColumn(4);
placeColumn.setPreferredWidth(5);

이 예에서 예제TableModel 클래스는 두 개의 문자열을 보유합니다. 그런 다음 getRowCount, getColumnCount, getValueAt 및 getColumnName 메소드는 배열을 사용하여 테이블에 대한 값을 제공할 수 있습니다. 또한 처음 두 열의 편집을 비활성화하기 위해 isCellEditable 메서드가 어떻게 작성되었는지 확인하세요.

이제 JTable의 경우 객체를 생성하기 위해 두 개의 배열을 사용하는 대신 다음 예제TableModel 클래스를 사용할 수 있습니다.

public abstract class AbstractTableModel extends Object implements TableModel, Serializable{
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
public String getColumnName(int column;
public boolean isCellEditable(int rowIndex, int columnIndex);
public Class getColumnClass(int columnIndex);
}
코드가 실행되면 JTable 객체가 표시됩니다. 편집할 테이블 셀이 없고 열 이름이 올바르게 사용되었기 때문에 테이블 모델을 사용하고 있습니다. getColumnName 메소드가 구현되지 않은 경우 테이블의 컬럼 이름은 A, B, C, D 등의 기본 이름으로 표시됩니다.

我们现在考虑一下该方法  getColumnClass。仅这一点使得表模型值得实现,因为它为JTable对象提供了每列中包含的数据类型。如果您还记得,对象数据数组有两列不是String数据类型:Place包含int的World Record列和包含的列booleans。了解这些数据类型会更改JTable对象为这些列提供的功能。运行带有表模型的示例表代码意味着该World Record列实际上将是一系列复选框。

添加ComboBox编辑器

您可以为表中的单元格定义自定义编辑器。例如,您可以使组合框替换字段的标准文本编辑。

以下是使用JComboBoxcountry字段的示例  :

String[] countries = {"Australia", "Brazil", "Canada", "China"
,"France", "Japan", "Norway", "Russia", "South Korea"
, "Tunisia", "USA"};
JComboBox countryCombo = new JComboBox(countries);

要设置country列的默认编辑器,请使用TableColumn该类获取对country列的引用,并使用该setCellEditor方法将该列设置JComboBox为单元格编辑器:

TableColumn countryColumn = table.getColumnModel().getColumn(2);
countryColumn.setCellEditor(new DefaultCellEditor(countryCombo));

위 내용은 JTable을 사용하여 Java 테이블을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.