如何在不创建新对象的情况下引用double值?

时间:2013-11-08 19:18:52

标签: java oop polymorphism double encapsulation

我遇到的问题是我想制作一个通用的代码块。 getHalfDotTime方法和getHalfTime方法是许多类似方法中的两个。

我不想为每个方法创建一个新的ActionListener,而是想在commonFormatting方法中创建ActionListener。

我这样做时遇到的问题是,例如,Declarations.halfDotTime双变量不能作为本地double包含。

我想要double currentTitle = Declarations.halfDotTime然后在ActionListener中将setText改为currentTitle。创建此问题的是,当程序运行时,它将当前标题设置为INIT值0,然后在按下按钮时保持为0.

private static void gethalfDotTime(JButton tapButton, JPanel contentPane) {
        final JLabel currentLabel = new JLabel("0ms");
        currentLabel.setBounds(119, 185, 120, 16);

    tapButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            currentLabel.setText(Declarations.threeDecimals.format(Declarations.halfDotTime) + "ms");
        }
    }); 
        commonFormatting(tapButton, contentPane, currentLabel);
    }

private static void gethalfTime(JButton tapButton, JPanel contentPane) {
        final JLabel currentLabel = new JLabel("0ms");
        currentLabel.setBounds(119, 185, 120, 16);

    tapButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            currentLabel.setText(Declarations.threeDecimals.format(Declarations.halfTime) + "ms");
        }
    }); 
        commonFormatting(contentPane, currentLabel);
    }

//MANY MORE SIMILAR METHODS ALL CALLING COMMON FORMATTING.



private static void commonFormatting(JPanel contentPane, final JLabel currentLabel) {

    currentLabel.setHorizontalAlignment(SwingConstants.RIGHT);
    currentLabel.setForeground(new Color(255, 255, 255));
    currentLabel.setFont(new Font("Letter Gothic Std", Font.BOLD, 14));
    contentPane.add(currentLabel);

1 个答案:

答案 0 :(得分:1)

您需要将commonTitle作为新的额外方法参数传递给commonFormatting。您的commonTitle变量是局部变量,这意味着它们仅在声明它们的方法中可见。

多态性和封装与代码无法编译的原因无关。实际上,您没有使用多态,这可能是解决此问题的好方法。