从事件中的不同 class 获取值

Get value from different class inside an event

我有两个 classes:

public jComboBox() {
... // this is a autocomplete jComboBox btw
...
   combo.addItemListener(new ItemListener(){
        public void itemStateChanged(ItemEvent ie) {

            if(ie.getStateChange() == 1) {
                String selectedItem = (String)getSelectedItem();
                randomMethod(selectedItem);

         }
        }
    });
}

 private void randomMethod(String selectedItem){
    someClass sc = new someClass();
    String randomString = selectedItem;
    sc.getRandomString(randomString);

}

public someClass() {
...
...
  }
public void getRandomString(String randomString){
   defaultTableModel.setRowCount(0);
.. do-something ..
 }

这个方法可以吗?如果没有,我需要一些替代方案,因为我遇到了问题,例如,使用 defaultTableModel.setRowCount(0) 因为 table 不会为空,除非我将 setRowCount(0) 放在其他someClass class.

中的方法

基本java访问说明符的东西.....你如何从randomMethod()调用这个私有方法getRandomString? class 的私有方法的可见性仅在 class,而不是其他任何地方。因此,您的以下代码:

 private void randomMethod(String selectedItem){
    someClass sc = new someClass();
    String randomString = selectedItem;
    fs.getRandomString(randomString); // This will not work

}

由于访问说明符 private 而无法工作。如果您可以允许特定于您拥有的包的访问权限,您可以将其更改为:

protected void getRandromString(String randromString) {...}

只是为了证明我的意思:

package com.Whosebug.solutionmaker;

public class Aclass {

    public Aclass(){
        somePrivMethod();
    }

    public void aMethod(){
        System.out.println("Can see me from anywehre bcoz I am public");
    }

    private void somePrivMethod(){
        System.out.println("Cannot find me from anywhere because I am private t Aclass");
    }

}

现在亚军class:

package com.Whosebug.solutionmaker;

public class WhosebugSolutionsRunner {

    public static void main(String[] args) {

        Aclass aClass = new Aclass(); // It will display"Cannot find me from anywhere because I am private t Aclass"

        aClass.aMethod(); // It will display "Can see me from anywehre bcoz I am public

        aClass.somePrivMethod(); // Will throw a compile-time error


    }
}

现在是一个很好的练习,可以从命令行编译这两个文件并查看您得到的错误消息。或者,使用 Eclipse smart IDE 或 Jcreator,您可以看到您的私有访问说明符导致出现红色消息。