如何从私有方法中获取值

时间:2014-09-04 11:58:37

标签: java netbeans slider trygetvalue

我使用NetBeans创建了一个jSlider ChangeEvent,其代码如下:

public class Slider extends javax.swing.JFrame {
    public Slider() {
         initComponents;
         field.getText();
         String fieldVal = field.getText();
         jtextField1.setText(fieldVal):
    }

    public JTextField getField() {
         return field;
    }

    public void setField(JTextField field) {
          this.field = field;
    }

    private void sliderStateChanged(javax.swing.event.ChangeEvent evt) { 
          int value = slider.getValue();
          String val = value + "";
          field.setText(val + "%");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new Slider().setVisible(true);
        }
    });
    }
}

所以,我有一个JTextField(字段)从jSpiner接收值。一切正常,但我想拿“val”并用它做一些计算。

但我不能这样做,因为它是私有方法,并且我试图使用Refactor -> Change方法参数公开它,但是它给了我以下警告:只读块文本无法重构。它不起作用。

我也试图制作吸气剂和制定者,但仍然无法正常工作。我想要的只是取这个价值。我可以直接从 JTextField(字段)中获取它,但我也想要“%”,所以我无法进行计算......有人可以帮我一个想法吗?我知道我错了什么,但不知道错在哪里。或者是否有可能以其他方式在文本字段中添加“%”?我需要一些帮助,谢谢!

祝你好运, 尤利亚

4 个答案:

答案 0 :(得分:0)

Java Reflection救援!在类上使用getDeclaredField,然后使用setAccessible(true);最后反射性地通过field.get(实例)获取值! TUH,咄。

或者,更复杂的是,实现一个ClassLoader并修改"修饰符"对于所述领域/方法公开...

总体而言,反思具有重大意义和影响。请读一读。

答案 1 :(得分:0)

根据我的理解,你不能让String val成为范围之外的全局变量而不是局部变量然后使用吗?

答案 2 :(得分:0)

临时解决方案可以是:

如果要更改限制区域,请复制粘贴代码 在新的.java文件中进行编辑。

如果只是值,请创建一个公共变量并分配JSlider值。

答案 3 :(得分:0)

根据您编辑的问题,我可以看到您只需要一个文本框,其中显示了附加了的滑块的值。

这是一个代码示例,显示了这一点。 https://gist.github.com/anonymous/96e898ec41cd2ed0f821

创建文件名 NewJFrame.java 复制并查看代码并运行以查看结果。

根据你的代码,我认为文本字段有问题可能是它没有被初始化。如果您分享您的整个代码,我可以找到该错误。