是否可以重用 getter,而不必为每个返回值创建一个 getter(它们都是 JPanel 类型。
这是我的类(class):
public class GamePanels {
JPanel begin, middle, end;
public void begin(){
begin = new JPanel();
begin.setBackground(Color.MAGENTA);
JLabel beginLabel = new JLabel("Do you want to avoid using much of your brain?");
JButton beginYes = new JButton("Yes");
JButton beginNo = new JButton("No");
begin.add(beginLabel);
begin.add(beginYes);
begin.add(beginNo);
}
public void middle(){
//code here
}
public void end(){
//code here
}
public JPanel getPanel(){
return begin;
}
public JPanel getPanel1(){
return middle;
}
public JPanel getPanel2(){
return end;
}
}
这是我的主类中的一个片段(actionListener 使用的类:
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
GamePanels g = new GamePanels();
g.begin();
container.add("Begin", g.getPanel());
cl.show(container, "Begin");
}
});
有没有一种方法可以重复使用相同的 getter,而不是创建大量的 getter 并记住我需要哪个 getter?就像也许在某处添加一个参数,这样它就可以通过一个 getter 了?或者我是否必须为每个值编写一个单独的值?
最佳答案
是的,可以定义一个基于参数返回特定面板的 getter。在您的情况下(使用您发布的少量信息),我的做法是定义一个具有可能状态的枚举(假设您有一组已知的可能状态),并通过查找 map 。例如。 (我没有尝试编译此代码,它可能包含一些编译错误):
public enum GameState {
BEGIN, MIDDLE, END;
}
public class GamePanels {
private Map<GameState, JPanel> lookup = new HashMap<GameState, JPanel> ();
private JPanel beginPanel;
private JPanel middlePanel;
private JPanel endPanel;
public GamePanels () {
// Initialize panels
lookup.put (GameState.BEGIN, beginPanel);
lookup.put (GameState.MIDDLE, middlePanel);
lookup.put (GameState.END, endPanel);
}
public getPanel (GameState state) {
JPanel panel = new JPanel ();
if (lookup.containsKey (state)) {
panel = lookup.get (state);
}
return panel;
}
}
请注意,虽然这可行,但这可能不是此类问题的最佳实现。这个主题更适合 Programmers.SE。
关于Java Getter 方法 - 如何重新利用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788535/