java 使用 swing 写一个对列表数据增删改查的页面,要求新增按钮在右上,查询按钮可以通过输入模糊查询条件进行搜索。删除和修改按钮在每一条数据的后面
时间: 2024-03-20 20:39:47 浏览: 142
好的,我会尽力回答您的问题。首先,您可以使用JFrame和JPanel创建一个基本的窗口。然后,使用JList和JScrollPane来显示列表数据。接下来,您可以在JPanel上添加JButton来实现新增、删除和修改功能。最后,您可以使用JTextField和JButton来实现模糊查询。
以下是示例代码:
```java
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListPage extends JFrame implements ActionListener {
private JPanel contentPane;
private DefaultListModel<String> listModel;
private JList<String> list;
private JTextField searchField;
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
ListPage frame = new ListPage();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
public ListPage() {
setTitle("列表页面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
// 列表
listModel = new DefaultListModel<>();
listModel.addElement("数据1");
listModel.addElement("数据2");
listModel.addElement("数据3");
list = new JList<>(listModel);
JScrollPane scrollPane = new JScrollPane(list);
contentPane.add(scrollPane, BorderLayout.CENTER);
// 查询
JPanel searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel searchLabel = new JLabel("查询条件:");
searchField = new JTextField(20);
JButton searchButton = new JButton("查询");
searchButton.addActionListener(this);
searchPanel.add(searchLabel);
searchPanel.add(searchField);
searchPanel.add(searchButton);
contentPane.add(searchPanel, BorderLayout.NORTH);
// 新增
JPanel addPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JButton addButton = new JButton("新增");
addButton.addActionListener(this);
addPanel.add(addButton);
contentPane.add(addPanel, BorderLayout.NORTH);
// 修改和删除
list.setCellRenderer(new ButtonCellRenderer());
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if ("查询".equals(command)) {
String searchKeyword = searchField.getText();
// 根据关键字查询数据
// 更新列表
// listModel.addElement(...)
} else if ("新增".equals(command)) {
// 显示新增对话框
} else if ("修改".equals(command)) {
// 显示修改对话框
} else if ("删除".equals(command)) {
// 删除选中的数据
// 更新列表
// listModel.remove(...)
}
}
private static class ButtonCellRenderer extends JButton implements ListCellRenderer<Object> {
public ButtonCellRenderer() {
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
JButton modifyButton = new JButton("修改");
modifyButton.setActionCommand("修改");
modifyButton.addActionListener((ActionEvent e) -> {
// 显示修改对话框
});
JButton deleteButton = new JButton("删除");
deleteButton.setActionCommand("删除");
deleteButton.addActionListener((ActionEvent e) -> {
// 删除选中的数据
// 更新列表
// listModel.remove(...)
});
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.RIGHT));
panel.add(modifyButton);
panel.add(deleteButton);
panel.setBackground(getBackground());
panel.setForeground(getForeground());
return panel;
}
}
}
```
需要注意的是,这只是一个简单的示例代码,您需要根据具体需求进行修改和完善。同时,您也可以使用其他GUI框架,如JavaFX和SwingX等来创建列表页面。
阅读全文