Ограничение строки JTable

Мне нужно ограничить количество строк в JTable . Если у меня есть 100 записей, мне нужно отобразить 10 при начальной загрузке JTable. Я хочу наложить кнопку типа "next" , и после каждого щелчка она показывает еще один набор из 10 записей.

Мне нужно ограничить количество строк в JTable. Если у меня есть 100 записей, мне нужно отобразить 10 при начальной загрузке JTable.

Используйте предпочтительный размер (+ соответствующий макет и ограничение макета), чтобы исправить размер.

Я хочу наложить кнопку «следующая», и после каждого щелчка она показывает еще один набор из 10 записей.

Удалите полосу прокрутки в области RHS панели прокрутки. Затем используйте кнопки вместо эффекта «next / previous».

Как это

Таблица данных

FixedRowsTable.java

 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; class FixedRowsTable { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { String[] columns = {"1","2","3","4","5","6","7"}; Integer[][] data = new Integer[1000][columns.length]; for (int xx=0; xx"); next.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent ae) { int height = table.getRowHeight()*(rows-1); JScrollBar bar = scrollPane.getVerticalScrollBar(); bar.setValue( bar.getValue()+height ); } } ); JButton previous = new JButton("<"); previous.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent ae) { int height = table.getRowHeight()*(rows-1); JScrollBar bar = scrollPane.getVerticalScrollBar(); bar.setValue( bar.getValue()-height ); } } ); navigation.add(previous); navigation.add(next); gui.add(scrollPane, BorderLayout.CENTER); gui.add(navigation, BorderLayout.SOUTH); JOptionPane.showMessageDialog(null, gui); } }); } } 

Если вы используете AbstractTableModel, вы можете отображать миллионы записей. Идея заключается в том, что ваша модель будет загружать все записи, необходимые для просмотра, по запросу.

Здесь у вас есть такая Модель. Это не мой лучший код, но сделаю 🙂 …

 public class SomeTableModel extends AbstractTableModel { public SomeTableModel(ResultSet rs) { this.rs = rs; try { pos = this.rs.getRow(); System.out.println(String.valueOf(pos)); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex); } } public int getRowCount() { int cnt = 0; int apos = 0; try { apos = rs.getRow(); rs.last(); cnt = rs.getRow(); if (apos > 0) rs.absolute(apos); } catch (SQLException ex) { System.out.println("getRowCount: " + ex); } return cnt; } public int getColumnCount() { return 3; } public Object getValueAt(int rowIndex, int columnIndex) { // make it jump back to pos !! Object val = null; Integer intVal; try { if (rowIndex == 0) { pos = rs.getRow(); total = getRowCount(); } rs.absolute(rowIndex + 1); switch (columnIndex) { case 0: intVal = rs.getInt(1); val = intVal; break; case 1: val = rs.getString(2); break; case 2: val = rs.getString(3); break; default: val = "error"; } rs.absolute(pos); } catch (SQLException sqle) { JOptionPane.showMessageDialog(null, "Trouble in model"); } return val; } private ResultSet rs; private int pos, total; } 

Если вы загружаете данные из таблицы базы данных, я думаю, что лучший способ – ограничить данные, поступающие из базы данных. Затем примените простой алгоритм для следующих и предыдущих кнопок.

  • JTable с JPopupMenu
  • Как обмениваться данными с двумя (2) classами SwingWorker в Java
  • Как добавить гиперссылку в JLabel
  • Как закрыть приложение Java Swing из кода
  • Java Bouncing Ball
  • Как реализовать в Java (class JTextField), чтобы разрешить вводить только цифры?
  • JComponents, исчезающие после вызова mouseClicked ()
  • JMenu ActionListener
  • Как я могу обновить внешний вид JFreeChart после того, как он станет видимым?
  • Java KeyListener не регистрирует клавиши со стрелками
  • Фоновое изображение JFrame
  • Давайте будем гением компьютера.