这是我第一次使用Java swing n co进行gui编程,因此我需要一些建议。我目前正在通过在按钮上设置操作命令来向按钮添加功能。然后,我在容器上侦听以下操作:

    colorButton.setText("Select Color");
    colorButton.setFocusable(false);
    colorButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
    colorButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
    jToolBar1.add(colorButton);
    jToolBar1.add(jSeparator1);
    colorButton.setActionCommand("selectColor");
    colorButton.addActionListener(this);


然后,我使用以下代码段检查针对哪个组件执行了操作:

else if("selectColor".equals(e.getActionCommand())) {
        Color c = JColorChooser.showDialog(this, "Select Color", Color.GREEN);
        if (selectedShape != null) {
            undoStack.add(copyOf(model.getAllShapes()));
            model.setShapeColor(selectedShape, c);
        }
        else{
            defaultColor = c;
        }
    }


我只想知道这是好还是坏做法?

最佳答案

我通常要做的是使用匿名类,例如

JButton button = new JButton("BUTTON");

button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event ) {
    // do relevant stuff
  }
});


编辑:MadProgrammer的评论(以上)很好地总结了您的选择。对于“更长”的方法,这确实不是最好的方法,但是对于简单的方法,它确实很不错,恕我直言。

10-06 06:54