修改我的代码,在不改变功能前提下变得好看
时间: 2024-09-17 14:09:34 浏览: 40
《修改代码的艺术》_parkrwy_修改代码的艺术_
当然可以。为了使你的代码更加整洁、易于阅读和维护,我们可以按照以下几个步骤进行优化:
1. **引入命名约定**:变量名、方法名应尽可能地反映其用途,例如 `selectedProductBtn` 相比于 `removeRowBtu` 更明确。
2. **提取常量和工具类**:如颜色、字体等可以作为常量,而布局管理器或样式类可以封装成单独的工具类。
3. **重构代码结构**:将相似的功能(如按钮操作)集中在单独的方法或类里,减少代码的冗余。
4. **简化布局**:使用适当的布局管理器,如`FlowLayout`、`BoxLayout` 或 `GridBagLayout`,使组件分布更有序。
下面是一个示例,展示如何优化部分代码段:
```java
import javax.swing.*;
import java.awt.*;
public class EnhancedProductInfo extends JFrame {
private ProductInfoPanel productInfoPanel;
private JTextField searchField;
private JButton addButton;
private JButton editButton;
private JButton deleteButton;
public EnhancedProductInfo() {
// 初始化UI
initUI();
}
private void initUI() {
setTitle("产品信息");
setSize(800, 650);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
productInfoPanel = new ProductInfoPanel(titles, userInfo);
productInfoPanel.setBorder(new LineBorder(Color.BLUE));
JPanel buttonPanel = createButtonPanel();
buttonPanel.setLayout(new FlowLayout());
setLayout(new BorderLayout());
add(productInfoPanel, BorderLayout.CENTER);
add(buttonPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
// 创建按钮面板并返回
private JPanel createButtonPanel() {
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
addButton = new JButton("添加");
editButton = new JButton("编辑");
deleteButton = new JButton("删除");
addButton.addActionListener(this::handleAddButtonClick);
editButton.addActionListener(this::handleEditButtonClick);
deleteButton.addActionListener(this::handleDeleteButtonClick);
buttonPanel.add(addButton);
buttonPanel.add(editButton);
buttonPanel.add(deleteButton);
return buttonPanel;
}
// 按钮处理逻辑提取为单独方法
private void handleAddButtonClick(ActionEvent e) {
userInfo = addNewProduct();
productInfoPanel.updateTable();
}
private void handleEditButtonClick(ActionEvent e) {
int editedRow = productInfoPanel.getSelectedRow();
if (editedRow != -1) {
new EditProductDialog(userInfo[editedRow]).show();
}
}
private void handleDeleteButtonClick(ActionEvent e) {
int deletedRow = productInfoPanel.getSelectedRow();
if (deletedRow != -1) {
delectProduct(deletedRow);
updateTable();
}
}
// ...其他方法和类...
}
// 提取到一个单独的类,如ProductInfoPanel
class ProductInfoPanel extends JPanel implements ActionListener {
private JTable jTable;
private JButton[] actionButtons;
// ...构造函数,初始化方法...
}
```
在这个例子中,我们创建了一个`EnhancedProductInfo`类来包含主框架,将其拆分为几个小的部分,如`ProductInfoPanel`和按钮处理逻辑。这样可以使代码更具模块化,也更容易理解和维护。
阅读全文