⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixedtable.java

📁 The Definitive Guide to Java Swing, Third Edition by John Zukowski (Author) 源码
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class FixedTable {
  public static void main(String args[]) {

    final Object rowData[][] = {
      {"1",  "one",   "ichi",   "un",     "I", "\u4E00"},
      {"2",  "two",   "ni",     "deux",   "II", "\u4E8C"},
      {"3",  "three", "san",    "trois",  "III", "\u4E09"},
      {"4",  "four",  "shi",    "quatre", "IV", "\u56DB"},
      {"5",  "five",  "go",     "cinq",   "V", "\u4E94"},
      {"6",  "six",   "roku",   "treiza", "VI", "\u516D"},
      {"7",  "seven", "shichi", "sept",   "VII", "\u4E03"},
      {"8",  "eight", "hachi",  "huit",   "VIII", "\u516B"},
      {"9",  "nine",  "kyu",    "neur",   "IX", "\u4E5D"},
      {"10", "ten",   "ju",     "dix",    "X", "\u5341"}
    };

    final String columnNames[] = {"#", "English", "Japanese", "French", "Roman", "Kanji"};

    final TableModel fixedColumnModel = new AbstractTableModel() {
      public int getColumnCount() {
        return 1;
      }
      public String getColumnName(int column) {
        return columnNames[column];
      }
      public int getRowCount() {
        return rowData.length;
      }
      public Object getValueAt(int row, int column) {
        return rowData[row][column];
      }
    };

    final TableModel mainModel = new AbstractTableModel() {
      public int getColumnCount() {
        return columnNames.length-1;
      }
      public String getColumnName(int column) {
        return columnNames[column+1];
      }
      public int getRowCount() {
        return rowData.length;
      }
      public Object getValueAt(int row, int column) {
        return rowData[row][column+1];
      }
    };

    Runnable runner = new Runnable() {
      public void run() {
        JTable fixedTable = new JTable(fixedColumnModel);
        fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//        fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JTable mainTable = new JTable(mainModel);
        mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//        mainTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        ListSelectionModel model = fixedTable.getSelectionModel();
        mainTable.setSelectionModel(model);

        JScrollPane scrollPane = new JScrollPane(mainTable);
        Dimension fixedSize = fixedTable.getPreferredSize();
        JViewport viewport = new JViewport();
        viewport.setView(fixedTable);
        viewport.setPreferredSize(fixedSize);
        viewport.setMaximumSize(fixedSize);
        scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedTable.getTableHeader());
        scrollPane.setRowHeaderView(viewport);

        JFrame frame = new JFrame("Fixed Column Table");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(scrollPane, BorderLayout.CENTER);
        frame.setSize(300, 150);
        frame.setVisible(true);
      }
    };
    EventQueue.invokeLater(runner);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -