此代碼應創建一個框架,其中包含一個標籤,用於打印出時鐘。方法zeitLaeuft()
使時鐘工作,並且隨着按鈕'開始'時鐘開始運行。當我調用方法zeitLaeuft()
時,代碼失敗。我試過幾件事,現在我知道是因爲標籤jLUhr
。在方法zeitLaeuft()
中,調用方法jLUhr.setText()
的兩個訂單失敗。我試圖設置標籤文本並將該方法註釋掉,但它不起作用。JLabel setText()方法不起作用
什麼問題?
package uhr;
import javax.swing.*;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.*;
import java.text.DecimalFormat;
import java.util.concurrent.TimeUnit;
public class Uhr1 extends javax.swing.JFrame {
public Uhr1() {
super();
initGUI();
}
private static JLabel jLUhr;
private static JButton jBtnStart;
private static int stunden = 0, minuten = 0;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Uhr1 uhr = new Uhr1();
uhr.setVisible(true);
uhr.setLocationRelativeTo(null);
}
});
}
public void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setTitle("Uhr");
getContentPane().setLayout(null);
{
JLabel jLUhr = new JLabel(); //Uhr = clock in german
add(jLUhr);
jLUhr.setBounds(49, 89, 300, 100);
jLUhr.setHorizontalAlignment(SwingConstants.CENTER);
jLUhr.setVerticalAlignment(SwingConstants.CENTER);
}
{
JButton jBtnStart = new JButton();
add(jBtnStart);
jBtnStart.setBounds(49, 219, 80, 30);
jBtnStart.setText("Start");
jBtnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
start(evt);
}
});
}
pack();
setSize(400,300);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void zeitLaeuft() {
while(true) {
if(minuten < 60) {
int i;
try {
for(i = 0; i < 60; i++){
jLUhr.setText(Integer.toString(stunden) + " : " + Integer.toString(minuten)); //this is where the code fails
TimeUnit.SECONDS.sleep(1);
jLUhr.setText(Integer.toString(stunden) + " " + Integer.toString(minuten)); //this is where the code fails
}
minuten++;
i = 0;
} catch (Exception e) {
e.printStackTrace();
}
}
else if(minuten == 60) {
minuten = 0;
if(stunden < 24) {
stunden ++;
}
else {
stunden = 0;
}
}
}
}
public void start(ActionEvent evt) {
zeitLaeuft(); //this is where the code fails
}
}
1)*「..代碼失敗..」*始終複製/粘貼錯誤和異常輸出! 2)請參閱[什麼是堆棧跟蹤,以及如何使用它來調試我的應用程序錯誤?](http://stackoverflow.com/q/3988788/418556)&[什麼是空指針異常,以及如何我修復它?](http://stackoverflow.com/q/218384/418556) –
3)'getContentPane()。setLayout(null);'Java GUI必須在不同的操作系統上工作',屏幕大小,屏幕分辨率等。在不同的地區使用不同的PLAF。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 –