Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 JTable의 단어 줄 바꿈 JTableHeader를 어떻게 구현할 수 있습니까?

<시간/>

JTableHeader

  • JTableHeader JComponent 의 하위 클래스입니다. 수업.
  • JTable 을 만들 때 객체에서 생성자는 새 JTableHeader 를 생성합니다. 테이블 구성 요소의 헤더를 관리하는 개체입니다.
  • JTableHeader 테이블 구성요소의 열 모델 과 연결된 개체 UI 대리자 열을 드래그하여 각 열의 헤더 셀을 렌더링할 수 있습니다.
  • JTable은 setTableHeader() 를 제공합니다. 테이블 헤더 구성요소의 JTableHeader 를 설정하는 메소드 개체 getTableHeader() 테이블 헤더 구성요소의 JTableHeader 에 대한 참조를 반환하는 메소드 개체 .

단어 줄 바꿈 표 헤더 를 구현할 수 있습니다. DefaultTableModel 을 사용자 정의하여 JTable의 클래스 또는 AbstractTableModel 수업.

예시

import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class WordWrappingTableHeaderTest extends JFrame {
   private JTable table;
   public WordWrappingTableHeaderTest() {
      setTitle("WordWrappingTableHeader Test");
      DefaultTableColumnModel tableColumnModel = new DefaultTableColumnModel() {
         public void addColumn(TableColumn column) {
            column.setHeaderRenderer(new JTableHeader().getDefaultRenderer());
            super.addColumn(column);
         }
      };
      table = new JTable();
      table.setFillsViewportHeight(true);
      table.setColumnModel(tableColumnModel);
      table.setModel(new DemoTableModel(Arrays.asList("Word Wrapping TableHeader Test", "Word Wrapping TableHeader Test", "Word Wrapping TableHeader Test"), 20));
      add(new JScrollPane(table));
      setSize(450, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setResizable(false);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   class DemoTableModel extends AbstractTableModel {
      private ArrayList wrappedColumnNames = new ArrayList();
      private int numRows;
      DemoTableModel(List columnNames, int numRows) {
         for (String name: columnNames)
            wrappedColumnNames.add("" + name + "");
            this.numRows = numRows;
      }
      public int getRowCount() {
         return numRows;
      }
      public int getColumnCount() {
         return wrappedColumnNames.size();
      }
      public Object getValueAt(int rowIndex, int columnIndex) {
         return Integer.valueOf(10000 + (rowIndex + 1)*(columnIndex + 1));
      }
      public String getColumnName(int column) {
         return wrappedColumnNames.get(column);
      }
      public Class getColumnClass(int columnIndex) {
         return Integer.class;
      }
   }
   public static void main(String[] args) {
     new WordWrappingTableHeaderTest();
   }
}

출력

Java에서 JTable의 단어 줄 바꿈 JTableHeader를 어떻게 구현할 수 있습니까?