gpt4 book ai didi

java - 如何将文件拖放到 JTable 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:38 25 4
gpt4 key购买 nike

我想将外部文件(例如从 Windows 资源管理器)拖放到 JTable 中。有人有一些示例代码是如何完成的吗?

最佳答案

只需使用 DropTarget 类来接收放置事件。您可以区分放入当前表(可用列/行)和放入滚动 Pane (例如添加新行)

import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDropEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class SwingTest extends JFrame{
private JTable table = new JTable();
private JScrollPane scroll = new JScrollPane(table);
private DefaultTableModel tm = new DefaultTableModel(new String[]{"a","b","c"},2);

public SwingTest() {
table.setModel(tm);
table.setDropTarget(new DropTarget(){
@Override
public synchronized void drop(DropTargetDropEvent dtde) {
Point point = dtde.getLocation();
int column = table.columnAtPoint(point);
int row = table.rowAtPoint(point);
// handle drop inside current table
super.drop(dtde);
}
});
scroll.setDropTarget(new DropTarget(){
@Override
public synchronized void drop(DropTargetDropEvent dtde) {
// handle drop outside current table (e.g. add row)
super.drop(dtde);
}
});
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(scroll);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(800,600);
this.setVisible(true);
}

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

关于java - 如何将文件拖放到 JTable 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708994/

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