javaswing保存文件时默认文件名展示在保存框
时间: 2023-12-06 22:45:44 浏览: 150
可以使用JFileChooser类来实现这个功能。首先,你需要创建一个JFileChooser对象,然后设置它的默认文件名和文件扩展名。下面是一个示例代码:
```java
JFileChooser fileChooser = new JFileChooser();
fileChooser.setSelectedFile(new File("defaultFileName.txt")); // 设置默认文件名
FileFilter filter = new FileNameExtensionFilter("Text Files", "txt"); // 设置文件扩展名
fileChooser.setFileFilter(filter);
int choice = fileChooser.showSaveDialog(null); // 显示保存对话框
if (choice == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
// 执行保存操作
}
```
在这个示例中,我们设置了默认文件名为"defaultFileName.txt",文件扩展名为"txt"。当用户点击保存按钮时,会弹出一个保存对话框,用户可以选择保存文件的路径和名称。如果用户点击了"保存"按钮,你可以通过`fileChooser.getSelectedFile()`方法获取用户选择的文件对象,然后执行保存操作。
相关问题
用java设计一个日历记事本。 主要要求: (1)实现日期(阳历)的显示、查看,显示星期与日期的对应; (2)选中相应日期后,如果有历史记录,在文本框中显示记录的内容 (3)选中相应日期后,如果无历史记录,可以在文本框中记录内容并保存到txt文件中 (4)在保存文件时,提供一个以当前时间(年-月-日-时-分-秒)为名称的默认文件名。
好的,我可以给你一些实现日历记事本的思路和代码示例。
## 思路
1. 用 Java 中的 Calendar 类来获取当前日期和时间,并将其显示在界面上。
2. 使用 JavaFX 来创建界面,包括一个日历控件和一个文本框。
3. 当用户选中某个日期时,程序会检查是否有对应的记事记录文件,如果有,则将其内容显示在文本框中;如果没有,则允许用户输入并将其保存为默认文件名的 txt 文件。
## 代码示例
### 创建界面
```java
public class CalendarNotebook extends Application {
private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 800, 600);
// 创建日历控件
DatePicker datePicker = new DatePicker();
datePicker.setOnAction(event -> {
LocalDate date = datePicker.getValue();
String filePath = "notes/" + formatter.format(date) + ".txt";
File file = new File(filePath);
try {
if (file.exists()) {
// 如果有历史记录,则读取并显示在文本框中
String content = new String(Files.readAllBytes(file.toPath()));
textArea.setText(content);
} else {
// 如果没有历史记录,则允许用户输入并保存为 txt 文件
textArea.setText("");
file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
});
// 创建文本框
TextArea textArea = new TextArea();
textArea.setEditable(true);
// 将日历控件和文本框放在界面上
VBox vbox = new VBox(datePicker, textArea);
root.setCenter(vbox);
primaryStage.setTitle("日历记事本");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
### 保存文件
```java
// 在 datePicker.setOnAction 方法中添加以下代码
if (!file.exists()) {
try {
// 如果文件不存在,则创建新文件
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try (PrintWriter writer = new PrintWriter(filePath)) {
// 将文本框中的内容保存到文件中
writer.write(textArea.getText());
} catch (IOException e) {
e.printStackTrace();
}
```
### 默认文件名
```java
// 在 datePicker.setOnAction 方法中添加以下代码
String currentTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"));
String filePath = "notes/" + formatter.format(date) + "-" + currentTime + ".txt";
```
以上代码示例是基于 JavaFX 的,如果你想使用 Swing 或其他 GUI 框架,可以根据需要进行修改。
用java代码设计一个日历记事本。 主要要求: (1)实现日期(阳历)的显示、查看,显示星期与日期的对应; (2)选中相应日期后,如果有历史记录,在文本框中显示记录的内容 (3)选中相应日期后,如果无历史记录,可以在文本框中记录内容并保存到txt文件中 (4)在保存文件时,提供一个以当前时间(年-月-日-时-分-秒)为名称的默认文件名。
以下是一个简单的Java代码设计日历记事本的示例:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.io.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class CalendarNotebook implements ActionListener {
private JFrame frame;
private JPanel panel;
private JTextArea textArea;
private JButton prevButton, nextButton, saveButton;
private Calendar calendar;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
CalendarNotebook window = new CalendarNotebook();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public CalendarNotebook() {
initialize();
}
private void initialize() {
frame = new JFrame("Calendar Notebook");
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
prevButton = new JButton("<");
prevButton.addActionListener(this);
panel.add(prevButton);
nextButton = new JButton(">");
nextButton.addActionListener(this);
panel.add(nextButton);
saveButton = new JButton("Save");
saveButton.addActionListener(this);
panel.add(saveButton);
textArea = new JTextArea();
frame.getContentPane().add(textArea, BorderLayout.CENTER);
calendar = new GregorianCalendar();
updateTextArea();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == prevButton) {
calendar.add(Calendar.DAY_OF_MONTH, -1);
updateTextArea();
} else if (e.getSource() == nextButton) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
updateTextArea();
} else if (e.getSource() == saveButton) {
try {
String fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".txt";
File file = new File(fileName);
FileWriter writer = new FileWriter(file);
writer.write(textArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
private void updateTextArea() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(calendar.getTime());
String dayOfWeek = getDayOfWeek(calendar.get(Calendar.DAY_OF_WEEK));
frame.setTitle(date + " " + dayOfWeek);
textArea.setText("");
try {
File file = new File(date + ".txt");
if (file.exists()) {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
textArea.append(line + "\n");
}
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private String getDayOfWeek(int dayOfWeek) {
switch (dayOfWeek) {
case Calendar.SUNDAY:
return "Sunday";
case Calendar.MONDAY:
return "Monday";
case Calendar.TUESDAY:
return "Tuesday";
case Calendar.WEDNESDAY:
return "Wednesday";
case Calendar.THURSDAY:
return "Thursday";
case Calendar.FRIDAY:
return "Friday";
case Calendar.SATURDAY:
return "Saturday";
default:
return "";
}
}
}
```
这个程序使用了Java Swing库来创建GUI。在程序中,我们创建了一个JFrame窗口,一个JPanel面板,一个JTextArea文本框,以及三个JButton按钮。我们使用Calendar类来处理日期,并使用SimpleDateFormat类将日期格式化为字符串。当用户点击“<”按钮或“>”按钮时,我们会更新日历并更新文本框中的内容。当用户点击“Save”按钮时,我们会将文本框中的内容保存到一个以当前时间命名的txt文件中。如果用户在某个日期没有记录,那么我们会自动创建一个以该日期命名的txt文件。
阅读全文