0

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

我也尝试过制作 getter 和 setter,但仍然无法正常工作。我想要的就是接受那个价值。我可以直接从JTextField (字段)中获取它,但我也想在其中包含“%”,所以我无法进行计算......有人可以帮我出个主意吗?我知道我错了,但不知道错在哪里。或者是否有可能以其他方式将“%”放在文本字段中?我需要一些帮助,谢谢!

最好的问候,尤利亚

4

4 回答 4

0

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

或者,更复杂的是,实现一个 ClassLoader 并修改所述字段/方法的“修饰符”以使其公开......

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

于 2014-09-04T12:02:33.137 回答
0

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

于 2014-09-04T12:05:28.237 回答
0

临时解决方案可以是:

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

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

于 2014-09-04T12:06:17.350 回答
0

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

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

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

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

于 2014-09-04T12:06:19.013 回答