要求通过点击左边的目录Button,可以实现右边面板的切换。 左边面板可以分别编写四个面板类分别为“消息中心”,“学生信息”,“工作日志”,“个性设置”。右边面板切换可以根据JSplitPane中的方法setRightComponent(Component)实现。其中“消息中心”需要声明消息类Message,包括消息内容(String)和状态(即,已读,未读)(Boolean)。 消息面板主要用列表框Jlist<Message>实现。可以根据消息状态进行筛选信息,也可以根据消息信息内容部分匹配进行筛选,可以删除选中信息,可以删除全部信息。给出详细的代码及注释。
时间: 2024-02-25 08:55:58 浏览: 245
好的,这是您的第一个问题。下面是一个示例代码,可以实现左边目录Button的点击切换右边面板的功能:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class PanelSwitchDemo extends JFrame implements ActionListener {
private JPanel panelLeft;
private JPanel panelRight;
private JButton btnMsgCenter;
private JButton btnStudentInfo;
private JButton btnWorkLog;
private JButton btnSettings;
public PanelSwitchDemo() {
super("Panel Switch Demo");
// 创建左边的面板
panelLeft = new JPanel(new GridLayout(4, 1));
btnMsgCenter = new JButton("消息中心");
btnStudentInfo = new JButton("学生信息");
btnWorkLog = new JButton("工作日志");
btnSettings = new JButton("个性设置");
panelLeft.add(btnMsgCenter);
panelLeft.add(btnStudentInfo);
panelLeft.add(btnWorkLog);
panelLeft.add(btnSettings);
// 将左边的面板添加到窗口的左边
add(panelLeft, BorderLayout.WEST);
// 创建右边的面板
panelRight = new JPanel();
// 将右边的面板添加到窗口的中间
add(panelRight, BorderLayout.CENTER);
// 设置按钮的事件监听器
btnMsgCenter.addActionListener(this);
btnStudentInfo.addActionListener(this);
btnWorkLog.addActionListener(this);
btnSettings.addActionListener(this);
// 设置窗口的大小和关闭方式
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// 获取点击的按钮
JButton btn = (JButton) e.getSource();
// 根据不同的按钮切换右边的面板
if (btn == btnMsgCenter) {
panelRight.removeAll();
// 创建消息列表框
JList<Message> lstMsg = new JList<>(new Message[] {
new Message("消息1", false),
new Message("消息2", true),
new Message("消息3", false),
new Message("消息4", true),
new Message("消息5", false),
});
panelRight.add(new JScrollPane(lstMsg));
} else if (btn == btnStudentInfo) {
panelRight.removeAll();
// 创建学生信息表格
JTable tblStudent = new JTable(new Object[][] {
{"张三", "男", 20},
{"李四", "女", 21},
{"王五", "男", 22},
{"赵六", "女", 23},
}, new Object[] {"姓名", "性别", "年龄"});
panelRight.add(new JScrollPane(tblStudent));
} else if (btn == btnWorkLog) {
panelRight.removeAll();
// 创建工作日志文本框
JTextArea txtWorkLog = new JTextArea(10, 30);
txtWorkLog.setText("2021-01-01 08:00:00 上班打卡\n2021-01-01 12:00:00 午休开始\n2021-01-01 13:00:00 午休结束\n2021-01-01 18:00:00 下班打卡");
panelRight.add(new JScrollPane(txtWorkLog));
} else if (btn == btnSettings) {
panelRight.removeAll();
// 创建个性设置面板
JPanel panelSettings = new JPanel(new GridLayout(2, 2));
panelSettings.add(new JLabel("背景颜色:"));
panelSettings.add(new JComboBox<>(new String[] {"红色", "绿色", "蓝色"}));
panelSettings.add(new JLabel("字体大小:"));
panelSettings.add(new JTextField("12"));
panelRight.add(panelSettings);
}
// 刷新窗口
revalidate();
repaint();
}
// 消息类
private static class Message {
private String content;
private boolean read;
public Message(String content, boolean read) {
this.content = content;
this.read = read;
}
public String getContent() {
return content;
}
public boolean isRead() {
return read;
}
public void setRead(boolean read) {
this.read = read;
}
@Override
public String toString() {
return content + (read ? "(已读)" : "(未读)");
}
}
public static void main(String[] args) {
new PanelSwitchDemo();
}
}
```
注:这只是示例代码,您需要根据自己的实际需求进行修改和完善。
阅读全文