相关疑难解决方法(0)

JTable:如何获取选定的单元格?

我有一个JTable及其TableModel,它运行良好,但我现在要做的是获取它的选定单元格.我想过做的事情:

int rows = this.getTable().getRowCount();
int columns = this.getTable().getColumnCount();
for(int i = 0 ; i < rows ; i++)
{
    for(int j = 0 ; j < columns ; j++)
    {
         if(table.getCell(i,j).isSelected() //...
    }
}
Run Code Online (Sandbox Code Playgroud)

但当然这样的事情不存在.我该怎么做呢?

swing jtable cell selected

9
推荐指数
2
解决办法
5万
查看次数

JTable模型侦听器过早检测插入的行(在绘制它们之前)

我有一个JTable可以由用户动态添加的行.它位于a中JScrollPane,因此当行数足够大时,滚动条变为活动状态.我的愿望是当用户添加新行时,滚动条一直移动到底部,以便在滚动窗格中看到新行.我现在(下面的SSCCE)尝试使用表模型侦听器来检测插入行的时间,并在进行检测时强制滚动条一直向下.然而,似乎这种检测"太早了",因为模型已经更新但是新行还没有实际绘制过,所以会发生的事情是滚动器插入新行之前一直移动到底部,并且然后将新行插入窗格末端的下方(不可见).

显然这种方法在某种程度上是错误的.什么是正确的方法?

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

public class TableListenerTest {

    private JFrame frame;
    private JScrollPane scrollPane;
    private JTable table;
    private DefaultTableModel tableModel;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TableListenerTest window = new TableListenerTest();
                    window.frame.setVisible(true);
                } catch (Exception e) { …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jtable listener

7
推荐指数
1
解决办法
6841
查看次数

标签 统计

jtable ×2

swing ×2

cell ×1

java ×1

listener ×1

selected ×1

user-interface ×1