【问题标题】:JTable autoscroll to the bottom in JavaJTable在Java中自动滚动到底部
【发布时间】:2013-05-03 15:49:52
【问题描述】:

每当我添加新列并显示最后 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();
            }
        });
    }
}

谢谢!

【问题讨论】:

    标签: java swing user-interface jtable jscrollpane


    【解决方案1】:

    change selection in JTable必填,添加代码行

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

    public (synchronized) void actionPerformed(ActionEvent e) {
    

    【讨论】:

      【解决方案2】:

      我希望 JTable 在我添加新列时自动滚动到底部

      我假设您的意思是添加新行时滚动到底部?

      model.addRow(new Object[] { count });
      table.scrollRectToVisible(...);
      

      【讨论】:

        【解决方案3】:

        你忘了在表中添加JScrollPane

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

        别忘了

        导入 javax.swing.JScrollPane;

        【讨论】:

        • 我添加了 JScrollPane 并修改了我的一些代码。但是如何自动滚动到底部呢?
        • 当您到达框架底部并添加更多行时,将出现滚动。
        猜你喜欢
        • 2011-09-16
        • 2016-11-13
        • 2014-02-27
        • 2016-09-15
        • 2018-08-21
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多