From 7f42a4b15f054e3a7471c16fae30f0e95599aeb0 Mon Sep 17 00:00:00 2001 From: purl68fke <1650359169@qq.com> Date: Fri, 13 Jun 2025 20:58:02 +0800 Subject: [PATCH] ADD file via upload --- 源代码.txt | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 源代码.txt diff --git a/源代码.txt b/源代码.txt new file mode 100644 index 0000000..56a06d9 --- /dev/null +++ b/源代码.txt @@ -0,0 +1,185 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +public class Main { + private DefaultListModel listModel; + private JList taskList; + private JTextField taskField; + private JTextField dateField; + private List data = new ArrayList<>(); // Array to store data + + public Main() { + // Create main window + JFrame frame = new JFrame("To-Do List"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(500, 500); // Increase window size + + // Main panel + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout(10, 10)); // Add margin + + // Task list + listModel = new DefaultListModel<>(); + taskList = new JList<>(listModel); + taskList.setCellRenderer(new CustomListRenderer()); + panel.add(new JScrollPane(taskList), BorderLayout.CENTER); + + // Input panel (for entering task and due date) + JPanel inputPanel = new JPanel(new GridLayout(3, 2, 10, 10)); // GridLayout with margin + inputPanel.add(new JLabel("Task:")); + taskField = new JTextField(); + inputPanel.add(taskField); + + inputPanel.add(new JLabel("Due Date (dd-mm-yyyy):")); + dateField = new JTextField(); + inputPanel.add(dateField); + + // Buttons panel + JPanel buttonPanel = new JPanel(new GridLayout(1, 5, 10, 10)); // 5 buttons + JButton addButton = new JButton("Add"); + JButton removeButton = new JButton("Remove"); + JButton editButton = new JButton("Edit"); + JButton saveButton = new JButton("Save"); + JButton toggleButton = new JButton("Completed"); + + // Add buttons to panel + buttonPanel.add(addButton); + buttonPanel.add(removeButton); + buttonPanel.add(editButton); + buttonPanel.add(saveButton); + buttonPanel.add(toggleButton); + + // Add action listeners to buttons + addButton.addActionListener(e -> addTask()); + removeButton.addActionListener(e -> removeTask()); + editButton.addActionListener(e -> editTask()); + saveButton.addActionListener(e -> saveTasks()); + toggleButton.addActionListener(e -> toggleTaskStatus()); + + // Add panels to main panel + panel.add(inputPanel, BorderLayout.NORTH); + panel.add(buttonPanel, BorderLayout.SOUTH); + + // Add panel to frame + frame.add(panel); + frame.setVisible(true); + } + + // Add a new task + private void addTask() { + String taskText = taskField.getText().trim(); + String dueDateText = dateField.getText().trim(); + if (!taskText.isEmpty() && !dueDateText.isEmpty()) { + TaskItem newTask = new TaskItem(taskText, dueDateText); + listModel.addElement(newTask); // Add to list + data.add(newTask); // Add to array + taskField.setText(""); + dateField.setText(""); + } + } + + // Remove a task + private void removeTask() { + int selectedIndex = taskList.getSelectedIndex(); + if (selectedIndex != -1) { + listModel.remove(selectedIndex); // Remove from list + data.remove(selectedIndex); // Remove from array + } + } + + // Edit a task + private void editTask() { + int selectedIndex = taskList.getSelectedIndex(); + if (selectedIndex != -1) { + String newTaskText = JOptionPane.showInputDialog("Enter new task:"); + String newDueDateText = JOptionPane.showInputDialog("Enter new due date (yyyy-mm-dd):"); + if (newTaskText != null && newDueDateText != null) { + TaskItem item = listModel.getElementAt(selectedIndex); + item.setTask(newTaskText); + item.setDueDate(newDueDateText); + taskList.repaint(); // Refresh list + } + } + } + + // Mark task as completed + private void toggleTaskStatus() { + int selectedIndex = taskList.getSelectedIndex(); + if (selectedIndex != -1) { + TaskItem item = listModel.getElementAt(selectedIndex); + item.toggleCompleted(); + taskList.repaint(); // Refresh list + } + } + + // Save tasks (only in memory) + private void saveTasks() { + JOptionPane.showMessageDialog(null, "Tasks saved!"); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(Main::new); + } +} + +// Task class +class TaskItem { + private String task; + private String dueDate; + private boolean isCompleted; + + public TaskItem(String task, String dueDate) { + this.task = task; + this.dueDate = dueDate; + this.isCompleted = false; + } + + public void toggleCompleted() { + isCompleted = !isCompleted; + } + + public boolean isCompleted() { + return isCompleted; + } + + public String getTask() { + return task; + } + + public void setTask(String task) { + this.task = task; + } + + public String getDueDate() { + return dueDate; + } + + public void setDueDate(String dueDate) { + this.dueDate = dueDate; + } + + @Override + public String toString() { + return (isCompleted ? "✓ " : "✗ ") + task + " (" + dueDate + ")"; + } +} + +// Custom list renderer for better UI +class CustomListRenderer extends DefaultListCellRenderer { + private ImageIcon checkIcon = new ImageIcon("check.png"); + private ImageIcon uncheckIcon = new ImageIcon("uncheck.png"); + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if (value instanceof TaskItem) { + TaskItem task = (TaskItem) value; + label.setIcon(task.isCompleted() ? checkIcon : uncheckIcon); + } + return label; + } +} -- 2.34.1