1

新しい列を追加して最後の 10 行を表示するたびに、JTable を一番下まで自動スクロールしたいと考えています。ただし、必要な場所にスクロールするオプションがあります (マウス リスナー?)。その方法を知っていますか?ここに私がこれまで持っているコードがあります。JTable を作成し、JButton をマウスでクリックするたびに新しい行を追加します。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class sampleGUI extends JFrame implements ActionListener {
    private JButton incrementButton;
    private JTable table;
    private DefaultTableModel model;
    private int count;
    private JScrollPane scroll;


    public sampleGUI() {
        JFrame frame = new JFrame("sample frame");
        frame.setLayout(new BorderLayout());

        incrementButton = new JButton("Increase the count!");

        model = new DefaultTableModel();
        model.addColumn("column 1");
        table = new JTable(model);
        frame.add(incrementButton, BorderLayout.NORTH);
        scroll = new JScrollPane(table)
        frame.add(scroll, BorderLayout.CENTER);

        count = 0;

        incrementButton.addActionListener(this);

        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    @Override
    public synchronized void actionPerformed(ActionEvent e) {
        if (e.getSource() == incrementButton) {
            count++;
            model.addRow(new Object[] { count });
        }
    }

    public static void main(final String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                sampleGUI gui = new sampleGUI();
            }
        });
    }
}

ありがとう!

4

3 に答える 3

5

JTableの選択を変更し、コード行を追加する必要があります

table.changeSelection(table.getRowCount() - 1, 0, false, false);

public (synchronized) void actionPerformed(ActionEvent e) {
于 2013-05-03T16:54:06.107 に答える
1

新しい列を追加するたびに JTable を一番下まで自動スクロールしたい

新しい行を追加するときに一番下までスクロールすることを意味していると思いますか?

model.addRow(new Object[] { count });
table.scrollRectToVisible(...);
于 2013-05-03T19:57:07.170 に答える
0

JScrollPaneテーブルに追加するのを忘れました:

//...
frame.add(new JScrollPane(table), BorderLayout.CENTER);
//...

忘れないで

import javax.swing.JScrollPane;

于 2013-05-03T16:01:33.457 に答える