导出时可选择保存目录
This commit is contained in:
@@ -452,19 +452,43 @@ public class ImageDotMarker extends JFrame {
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("图片标记点坐标:\n");
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
MarkPoint p = points.get(i);
|
||||
sb.append(String.format("%d. %s: (%d, %d)\n", i + 1, p.name, p.x, p.y));
|
||||
JFileChooser fileChooser = new JFileChooser();
|
||||
fileChooser.setSelectedFile(new File("mark_points.txt"));
|
||||
fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件 (*.txt)", "txt"));
|
||||
|
||||
int result = fileChooser.showSaveDialog(this);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
try {
|
||||
File file = fileChooser.getSelectedFile();
|
||||
if (!file.getName().toLowerCase().endsWith(".txt")) {
|
||||
file = new File(file.getAbsolutePath() + ".txt");
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// 添加头部信息
|
||||
sb.append("# 图片标记点坐标导出\n");
|
||||
if (currentImagePath != null) {
|
||||
sb.append(String.format("# 来源图片: %s\n", new File(currentImagePath).getName()));
|
||||
}
|
||||
sb.append(String.format("# 导出时间: %s\n", new java.util.Date()));
|
||||
sb.append("# ======================================\n\n");
|
||||
|
||||
// 添加标记点数据
|
||||
sb.append("序号,名称,X坐标,Y坐标\n");
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
MarkPoint p = points.get(i);
|
||||
sb.append(String.format("%d,%s,%d,%d\n", i + 1, p.name, p.x, p.y));
|
||||
}
|
||||
|
||||
// 写入文件
|
||||
java.nio.file.Files.write(file.toPath(), sb.toString().getBytes("UTF-8"));
|
||||
|
||||
JOptionPane.showMessageDialog(this, "标记点坐标导出成功!\n保存位置: " + file.getAbsolutePath());
|
||||
updateStatusBar("已导出标记点坐标到文件");
|
||||
} catch (IOException ex) {
|
||||
JOptionPane.showMessageDialog(this, "导出失败: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
JTextArea textArea = new JTextArea(sb.toString());
|
||||
textArea.setEditable(false);
|
||||
JScrollPane scrollPane = new JScrollPane(textArea);
|
||||
scrollPane.setPreferredSize(new Dimension(300, 200));
|
||||
|
||||
JOptionPane.showMessageDialog(this, scrollPane, "标记点坐标", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
|
||||
private void updatePointList() {
|
||||
|
||||
Reference in New Issue
Block a user