Java Getter 方法 - 如何重新利用它们?

标签 java swing

是否可以重用 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/

相关文章:

java - Swing 组件命名约定?

java - 如何在 Java 中设置鼠标的位置?

java - 在高 DPI 计算机上调整 JAVA 应用程序项目 (Chromis POS) 的分辨率

java - 正则表达式从 Java 中的 wikimarkup 页面获取混合链接

java - 从数据库中的多个表中检索数据

java - 当JButton增加JLabel中的值时获取值并放入数据库

java - 无法将 BufferedImage 保存到指定的 URL

java - Junit 和 spring websockets - 每次测试后我都会得到一个奇怪的异常

java 递归二叉搜索树

java - JSplitPane 分隔线自定义箭头标志