1
이것은 처음으로 java swing n co를 사용하여 GUI 프로그래밍을하는 것이므로 약간의 조언이 필요합니다. 현재 버튼에 동작 명령을 설정하여 버튼에 기능을 추가하고 있습니다. 그럼 아래와 같은 활동을 위해 컨테이너에서 수신 : 난 그냥이 있는지 알고 싶어Java의 버튼 기능을위한 동작 명령
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;
}
}
:
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);
난 후 어떤 구성 요소에 대한 수행 작업은 아래와 같은 조각을 사용하여 수행되었다 확인 좋은 연습이나 나쁜 연습?
"e.getSource()"를 사용하고 버튼과 비교할 때를 제외하고는 매우 비슷합니다. 그러나 익명의 내부 수업에 청취자가 있습니다. 이것이 더 좋고/더 나쁜 연습인지 잘 모르겠습니다. –
접근 방식에 특히 잘못된 것은 없지만 (작동 방식은 어떻게 설계 되었는가), [How to Use Actions] (http://docs.oracle.com/javase/tutorial/)를 통해 읽는 것이 좋습니다. uiswing/misc/action.html), 조금 더 발전되었지만 개념은 같습니다. Bucco가 말했듯이, 당신은 ActionListeners를 하나의 그룹으로 분리하거나 하나의 행동 개념을 다룰 수 있거나 내부 클래스를 사용할 수 있습니다. 청취자의 몸이 십여 라인을 초과하면 읽지 못하게되어 익명의 클래스를 사용하지 못하게 할 것입니다. – MadProgrammer
또한 [이 질문에] (http://stackoverflow.com/q/12463345/1076463) 참조하십시오. – Robin