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

📄 pagingmodel.java

📁 java swing 开发代码
💻 JAVA
字号:
// PagingModel.java// A larger table model that performs "paging" of its data.  This model// reports a small number of rows (like 100 or so) as a "page" of data.  You// can switch pages to view all of the rows as needed using the pageDown()// and pageUp() methods.  Presumably, access to the other pages of data is// dictated by other GUI elements such as up/down buttons, or maybe a text// field that allows you to enter the page number you want to display.//package	jswing.ch16;import javax.swing.table.*;import javax.swing.*;import java.awt.event.*;public class PagingModel extends AbstractTableModel {  protected int pageSize;  protected int pageOffset;  protected Record[] data;  public PagingModel() {    this(10000, 100);  }  public PagingModel(int numRows, int size) {    data = new Record[numRows];    pageSize = size;        // Fill our table with random data (from the Record() constructor).    for (int i=0; i < data.length; i++) {      data[i] = new Record();    }  }  // Return values appropriate for the visible table part.  public int getRowCount() { return Math.min(pageSize, data.length); }  public int getColumnCount() { return Record.getColumnCount(); }  // Work only on the visible part of the table.  public Object getValueAt(int row, int col) {    int realRow = row + (pageOffset * pageSize);    return data[realRow].getValueAt(col);  }  public String getColumnName(int col) {    return Record.getColumnName(col);  }  // Use this method to figure out which page you are on.  public int getPageOffset() { return pageOffset; }  public int getPageCount() {     return (int)Math.ceil((double)data.length / pageSize);  }  // Use this method if you want to know how big the real table is . . . we  // could also write "getRealValueAt()" if needed.  public int getRealRowCount() {    return data.length;  }  public int getPageSize() { return pageSize; }  public void setPageSize(int s) {     if (s == pageSize) { return; }    int oldPageSize = pageSize;    pageSize = s;    pageOffset = (oldPageSize * pageOffset) / pageSize;    fireTableDataChanged();/*    if (pageSize < oldPageSize) {      fireTableRowsDeleted(pageSize, oldPageSize - 1);    }    else {      fireTableRowsInserted(oldPageSize, pageSize - 1);    }*/  }  // Update the page offset and fire a data changed (all rows).  public void pageDown() {    if (pageOffset < getPageCount() - 1) {      pageOffset++;      fireTableDataChanged();    }  }  // Update the page offset and fire a data changed (all rows).  public void pageUp() {    if (pageOffset > 0) {      pageOffset--;      fireTableDataChanged();    }  }  // We provide our own version of a scrollpane that includes  // the page up and page down buttons by default.  public static JScrollPane createPagingScrollPaneForTable(JTable jt) {    JScrollPane jsp = new JScrollPane(jt);    TableModel tmodel = jt.getModel();    // Don't choke if this is called on a regular table . . .    if (! (tmodel instanceof PagingModel)) {      return jsp;    }    // Okay, go ahead and build the real scrollpane    final PagingModel model = (PagingModel)tmodel;    final JButton upButton = new JButton(new ArrowIcon(ArrowIcon.UP));    upButton.setEnabled(false);  // starts off at 0, so can't go up    final JButton downButton = new JButton(new ArrowIcon(ArrowIcon.DOWN));    if (model.getPageCount() <= 1) {      downButton.setEnabled(false);  // One page...can't scroll down    }    upButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent ae) {        model.pageUp();        // If we hit the top of the data, disable the up button.        if (model.getPageOffset() == 0) {          upButton.setEnabled(false);        }        downButton.setEnabled(true);      }    } );    downButton.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent ae) {        model.pageDown();        // If we hit the bottom of the data, disable the down button.        if (model.getPageOffset() == (model.getPageCount() - 1)) {          downButton.setEnabled(false);        }        upButton.setEnabled(true);      }    } );    // Turn on the scrollbars; otherwise we won't get our corners.    jsp.setVerticalScrollBarPolicy        (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);    jsp.setHorizontalScrollBarPolicy        (ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);    // Add in the corners (page up/down).    jsp.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, upButton);    jsp.setCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER, downButton);    return jsp;  }}

⌨️ 快捷键说明

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