我正在一個項目上工作,我遇到了一些我還沒完全理解的東西。總是需要靜態
每次我喜歡從另一個類調用一個方法,或者使用jform中的一個變量時,我的netbeans說我需要使它成爲「靜態」。現在我明白什麼是靜態方法,並且我已經從類中創建了使用方法的對象,但即使如此,NetBeans也表示,在MAIN()方法中使用它之前,我需要使對象成爲靜態。即使是像組合框這樣的變量變量。
有人能解釋一下嗎?
在此先感謝!
編輯:
這是我的項目的一些代碼。這是非常小的,但它應該澄清的問題:
的Mainclass:
public class SpeeloTheek {
/**
* @param args the command line arguments
*/
public static Controller MainController = new Controller();
public static SummaryScreen MainSummaryScreen = new SummaryScreen();
public static void main(String[] args) {
// TODO code application logic here
MainSummaryScreen.setVisible(true);
MainController.SetFullScreen(MainSummaryScreen);
MainController.ComboBoxItemSelected(SummaryScreen.choiceBox);
}
控制器類:
package speelotheek;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class Controller {
//Method to make JFrame fullscreen//
public void SetFullScreen(JFrame frameToUse) {
frameToUse.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
public void ComboBoxItemSelected(final JComboBox comboBoxToUse) {
comboBoxToUse.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
WhichSummary(comboBoxToUse);
}
}
});
}
public void WhichSummary(JComboBox comboBoxToUse) {
System.out.println(comboBoxToUse.getSelectedItem());
}
}
EDIT2:
感謝所有:)我發現這個問題。我在main方法中實例化類,而不是在主方法之上,它工作:)
你是從班級的主要方法做到這一點嗎?試圖從你的主要方法調用一個非靜態的函數? – Hrishikesh
從構造函數而不是'main' –
請發佈一些錯誤發生代碼,並且完整的錯誤消息 –