好Java異常,我想創建一個計算器的接口。此時,我有一個按鈕,一個問候標籤和一個將成爲計算器主線的標籤。當我運行代碼時,窗口打開並顯示問候語,但按鈕無處可見。終端顯示:鬼例外:在空行
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot use this in a static context
at Components.Interface.buttons(Interface.java:45)
at Components.Interface.main(Interface.java:60)
事情是,即使45行和60行沒有代碼,Java仍會爲這些行引發異常。它爲什麼這樣做?代碼如下:
package Components;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Interface {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame;
JPanel text = new JPanel();
JPanel controlPanel = new JPanel();
JLabel digits = new JLabel("");
frame = new JFrame("Calculator");
frame.setLayout(new FlowLayout());
frame.setPreferredSize(new Dimension(300, 400));
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
frame.add(text);
frame.add(controlPanel);
frame.setVisible(true);
frame.pack();
//about where line 45 is
digits.setBorder(BorderFactory.createLineBorder(Color.black));
digits.setSize(new Dimension(30, 20));
text.add(digits);
JLabel greet = new JLabel("Welcome to Calculator!");
greet.setSize(30, 20);
greet.setVerticalAlignment(SwingConstants.TOP);
greet.setBorder(BorderFactory.createLineBorder(Color.black));
text.add(greet);
//about where line 60 is
JButton one = new JButton("1");
one.setSize(100, 30);
one.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
digits.setText("1");
}
});
controlPanel.add(one);
}
}
甲迅速響應從未保證。你的問題越好,你會得到更快/更好的迴應。同樣,確保你已經*編譯*你的Java。當Java調試(並解決行號的異常)時,它不會*神奇*知道代碼已經移動,直到您將該信息重新編譯到.class文件。 – Qix 2014-10-29 21:16:53
你現在最大的錯誤是你試圖運行不可編譯的代碼 - 從來不這樣做!相反,找出編譯器告訴你的問題,而不是JVM,然後嘗試修復它們。只有在編譯沒有錯誤後才嘗試運行你的代碼。 – 2014-10-29 21:17:31
「第45行和第60行沒有代碼」 - 我們不知道這些行是什麼。你需要更具體。 – 2014-10-30 10:29:11