繁体   English   中英

如何从私有方法中获取价值

[英]How to take a value from a private method

我使用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 Method Parameters将其公开,但是它给了我以下警告:只读文本块无法重构。,它不起作用。

我也尝试过使吸气剂和二传手,但仍然无法正常工作。 我想要的就是珍惜这一价值。 我可以直接从JTextField(字段)中获取它,但是我也想在其中包含“%”,这样我就无法进行计算了。有人可以帮我一个忙吗? 我知道我在某件事上错了,但是不知道哪里出了错。 还是可以通过其他方式在文本字段中输入“%”? 我需要一些帮助,谢谢!

最好的问候,伊利亚

Java 反射来营救! 在类上使用getDeclaredField,然后使用setAccessible(true);。 最后通过field.get(instance)反射性地获取值! 嘟嘟

另外,更复杂的是,实现ClassLoader并修改所述字段/方法的“修饰符”以使其公开。

总体而言,反思具有重大影响和影响。 请仔细阅读。

据我了解,您不能让String val成为作用域之外的全局变量,而不是局部变量,然后再使用它吗?

临时解决方案可以是:

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

如果仅与值有关,请创建一个公共变量并分配JSlider值。

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

这是显示此代码示例。 https://gist.github.com/anonymous/96e898ec41cd2ed0f821

创建一个文件名NewJFrame.java复制并粘贴代码,然后运行以查看结果。

根据您的代码,我认为文本字段可能存在问题,可能是未初始化。 如果您共享整个代码,我可以找到该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM