gpt4 book ai didi

java - 当列移动时,如何同步两个 JTable 和 JTableHeader?

转载 作者:行者123 更新时间:2023-12-01 13:47:09 24 4
gpt4 key购买 nike

我有两个 JTable,它们必须彼此同步。这两个JTable都设置为允许记录。

所以我想知道如何在列移动时同步 JTableHeader 行为。

非常感谢,伙计。

最佳答案

为此,您可以使用具有 columnMoved(TableColumnModelEvent arg0)TableColumnModelListener 。这允许您根据源表交换其他表中的列。示例代码:

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;
import javax.swing.table.DefaultTableModel;

public class Example {

public static void main(String[] args) {
new Example();
}

public Example() {
JFrame frame = new JFrame("Rotation");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JTable t = new JTable(new DefaultTableModel(new Object[][]{{1,2}},new Object[]{"1","2"}));
final JTable t1 = new JTable(new DefaultTableModel(new Object[][]{{1,2}},new Object[]{"1","2"}));

frame.getContentPane().add(new JScrollPane(t),BorderLayout.WEST);
frame.getContentPane().add(new JScrollPane(t1),BorderLayout.EAST);

t.getColumnModel().addColumnModelListener(new TableColumnModelListener() {

@Override
public void columnSelectionChanged(ListSelectionEvent arg0) {
}

@Override
public void columnRemoved(TableColumnModelEvent arg0) {
}

@Override
public void columnMoved(TableColumnModelEvent arg0) {
int fromIndex = arg0.getFromIndex();
int toIndex = arg0.getToIndex();
t1.moveColumn(fromIndex, toIndex);
}

@Override
public void columnMarginChanged(ChangeEvent arg0) {
}

@Override
public void columnAdded(TableColumnModelEvent arg0) {
}
});

frame.pack();
frame.setVisible(true);
}

}

关于java - 当列移动时,如何同步两个 JTable 和 JTableHeader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20277839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com