我使用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(字段)中获取它,但我也想要“%”,所以我无法进行计算......有人可以帮我一个想法吗?我知道我错了什么,但不知道错在哪里。或者是否有可能以其他方式在文本字段中添加“%”?我需要一些帮助,谢谢!
祝你好运, 尤利亚
答案 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 复制并查看代码并运行以查看结果。
根据你的代码,我认为文本字段有问题可能是它没有被初始化。如果您分享您的整个代码,我可以找到该错误。