そこで、カスタム メニューを作成しています。これは、正しいメソッドの呼び出しを処理するサブメニュー アイテム クラスです。現在、メソッド名にswitch文を使用しているのですが、これが一番良いのでしょうか?
私は新しい目のセットが大好きです。私は長い間この方法を見てきました。ありがとう!
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;
import com.as.devcenter.Util;
public class MenuSubItem extends JLabel implements MouseListener {
private static final long serialVersionUID = 1L;
private String action = "";
public MenuSubItem(String label, String action, Class<?> className) {
addMouseListener(this);
this.action = action;
setText(label);
setName(action);
setSize(Util.widthOfText(getText(), Util.getDefaultFont()) + 4, 22);
}
/*
* Start Mouse Events
*/
@Override
public void mouseClicked(MouseEvent e) {
Util.log("MenuSubItem clicked");
if (action.equalsIgnoreCase("")) {
Util.log("No action was provided for MenuSubItem: " + getText());
} else {
try {
Method method = Actions.class.getDeclaredMethod(action, className);
switch (method.getName()) {
case "newProject":
NewProjectFrame npf = new NewProjectFrame();
method.invoke(npf, npf);
break;
case "openConsole":
Console console = new Console();
method.invoke(console, console);
break;
}
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e1) {
if (e1 instanceof NoSuchMethodException) {
Util.log("Could not identify action: " + action);
} else {
e1.printStackTrace();
}
}
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
Actions クラス (2 つのメソッド atm しかありませんが、さらに多くのメソッドがあります)
public class Actions {
public static void newProject(NewProjectFrame npf){
npf.setup();
Util.getProgram().items[0].clear();
}
public static void openConsole(Console console){
console.setup();
Util.getProgram().items[0].clear();
}
}