-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAppFrame.java
More file actions
80 lines (69 loc) · 2.87 KB
/
Copy pathAppFrame.java
File metadata and controls
80 lines (69 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
public class AppFrame extends JFrame {
private TitleBar titleBar;
private List list;
private JScrollPane listScrollPane;
private ButtonPanel btnPanel;
public AppFrame() {
this.setSize(800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
titleBar = new TitleBar();
list = new List();
btnPanel = new ButtonPanel();
// Wrap list inside a JScrollPane for scrolling support
listScrollPane = new JScrollPane(list);
listScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(titleBar, BorderLayout.NORTH);
this.add(listScrollPane, BorderLayout.CENTER);
this.add(btnPanel, BorderLayout.SOUTH);
addListeners();
this.setVisible(true);
}
private void addListeners() {
btnPanel.getAddTask().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String taskName = JOptionPane.showInputDialog(null, "Enter task name:");
if (taskName != null && !taskName.trim().isEmpty()) {
Task task = new Task(taskName);
list.add(task);
list.updateNumbers();
task.getDone().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
task.changeState();
list.updateNumbers();
}
});
listScrollPane.revalidate(); // Refresh layout after adding task
listScrollPane.repaint();
}
}
});
btnPanel.getClear().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Loop backwards to safely remove components while iterating
for (int i = list.getComponentCount() - 1; i >= 0; i--) {
if (list.getComponent(i) instanceof Task) {
Task task = (Task) list.getComponent(i);
// You will need a getter in Task class for checked status
if (task.isChecked()) {
list.remove(i);
}
}
}
list.updateNumbers();
list.revalidate();
list.repaint();
}
});
}
}