簡體   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