[JAVA] JTable, begränsa antalet rows som visas samt bläddra genom dessa.
Hej,
Försöker skapa ett JTable som enbart visar den första raden(och dess kolumner). Det kommer att lagras mer data, men det visas endast en rad åt gången. När man trycker på "Next" visas nästa rad och på "Previous", föregående rad.
Att enbart visa översta raden har jag lyckats med, använder jag mig av följande kod: (Är det en bra lösning?)
tableModel = new DefaultTableModel(data, columnNames);
tableModel.setRowCount(0);
tableModel.addTableModelListener(resultTable);
resultTable = new JTable(tableModel);
scroll = new JScrollPane(resultTable, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
final int rows = 1;
Dimension d = resultTable.getPreferredSize();
resultTable.setPreferredSize(new Dimension(d.width,resultTable.getRowHeight()*rows));
När man trycker på "Next" körs denna kod: (Detta fungerar inte, den står kvar på samma rad, hur skall jag göra?)
nextButt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int height = resultTable.getRowHeight()*(rows-1);
JScrollBar bar = scroll.getVerticalScrollBar();
bar.setValue( bar.getValue()+height);
Likaså "Previous": (Fungerar heller inte, står också kvar på samma rad.)
prevButt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int height = resultTable.getRowHeight()*(rows-1);
JScrollBar bar = scroll.getVerticalScrollBar();
bar.setValue(bar.getValue()-height);
resultTable.validate();
Tips på hur jag skall göra för att få det att fungera? Är väldigt vilsen för tillfället. Skall alltså visa ett JTable som enbart visar den första raden. När man trycker på next/previous skall nästa eller föregående rad visas istället. När man kommer till slutet skall den helst börja om från början igen.
Edit: Jag vet att jag kan lägga till data i mitt JTable. Varje gång jag lägger till något nytt skriver jag ut rowCount och den ökar stadigt.
Edit: Tar jag bort tableModel.setRowCount(0); läggs allt det nya på rad 2, varför?
Tack.