Java swing 根据集合给一份列表框 列表框带有字符串类型和隐藏的UUID值有设置状态的单选按钮、编辑的普通按钮、增加的普通按钮和删除的普通按钮
时间: 2024-01-22 09:19:10 浏览: 60
下面是一个简单的 Java Swing 代码示例,可以根据集合给一份带有字符串类型和隐藏的 UUID 值的列表框,并且带有设置状态的单选按钮、编辑的普通按钮、增加的普通按钮和删除的普通按钮。
首先,我们需要创建一个 JFrame,然后在 JFrame 上添加一个 JPanel。接下来,我们可以使用 JList 组件来创建列表框,使用 DefaultListModel 来管理其中的数据。我们还可以使用 JButton 来创建编辑、增加和删除按钮,使用 JRadioButton 来创建单选按钮。
在这个例子中,我们将 UUID 存储在列表框中的每个项目的“value”属性中,以便在需要时更轻松地访问它。我们还为每个项目创建了一个状态单选按钮,并使用 HashMap 来存储每个单选按钮的状态。
下面是完整的代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.UUID;
public class Example extends JFrame {
private DefaultListModel<String> listModel;
private JList<String> list;
private JButton editButton;
private JButton addButton;
private JButton deleteButton;
private HashMap<String, JRadioButton> radioButtons;
public Example() {
super("List Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
JPanel panel = new JPanel(new BorderLayout());
getContentPane().add(panel);
// Create a list model and list
listModel = new DefaultListModel<>();
list = new JList<>(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
panel.add(new JScrollPane(list), BorderLayout.CENTER);
// Create edit, add, and delete buttons
JPanel buttonPanel = new JPanel(new FlowLayout());
editButton = new JButton("Edit");
addButton = new JButton("Add");
deleteButton = new JButton("Delete");
buttonPanel.add(editButton);
buttonPanel.add(addButton);
buttonPanel.add(deleteButton);
panel.add(buttonPanel, BorderLayout.SOUTH);
// Add action listeners to buttons
editButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedIndex = list.getSelectedIndex();
if (selectedIndex != -1) {
String item = listModel.getElementAt(selectedIndex);
String newValue = JOptionPane.showInputDialog("Edit Item", item);
if (newValue != null && !newValue.isEmpty()) {
listModel.setElementAt(newValue, selectedIndex);
}
}
}
});
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String newItem = JOptionPane.showInputDialog("Add Item");
if (newItem != null && !newItem.isEmpty()) {
String uuid = UUID.randomUUID().toString();
listModel.addElement(newItem);
JRadioButton radioButton = new JRadioButton();
radioButton.putClientProperty("value", uuid);
radioButtons.put(uuid, radioButton);
}
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedIndex = list.getSelectedIndex();
if (selectedIndex != -1) {
String item = listModel.getElementAt(selectedIndex);
String uuid = (String) list.getClientProperty("value");
radioButtons.remove(uuid);
listModel.removeElementAt(selectedIndex);
}
}
});
// Create a radio button for each item in the list
radioButtons = new HashMap<>();
for (int i = 0; i < listModel.size(); i++) {
String item = listModel.getElementAt(i);
String uuid = UUID.randomUUID().toString();
JRadioButton radioButton = new JRadioButton();
radioButton.putClientProperty("value", uuid);
radioButtons.put(uuid, radioButton);
}
}
public static void main(String[] args) {
Example example = new Example();
example.setVisible(true);
}
}
```
这个例子中使用了一些比较高级的 Swing 组件和概念,如果你不熟悉其中的一些内容,建议先学习一下 Swing 的基础知识。
阅读全文