0
我剛剛編寫了一個Java程序(代碼如下)。它的目的是成爲一個屏幕保護程序。當我在eclipse中運行代碼時,一切正常,只要點擊一個鍵或點擊鼠標,程序就會關閉。但是,當我將它導出爲.jar文件時,此功能有時可以正常工作,但大多數情況下它不會?!這是爲什麼?KeyListener在導出時不起作用
public class fullscreen extends JPanel implements MouseListener, MouseMotionListener, KeyListener {
public fullscreen() {
addMouseListener(this);
addMouseMotionListener(this);
addKeyListener(this);
setFocusable(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(System.getProperty("java.io.tmpdir"));
BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
// Create a new blank cursor.
Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(
cursorImg, new Point(0, 0), "blank cursor");
BorderLayout bL = new BorderLayout();
String text = new String();
// create JFrame
JFrame myframe = new JFrame();
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myframe.setUndecorated(true);
myframe.setResizable(false);
myframe.setLayout(bL);
myframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
myframe.setBackground(new Color(144,132,118));
myframe.getContentPane().setBackground(new Color(144,132,118));
myframe.validate();
myframe.setVisible(true);
// Set the blank cursor to the JFrame.
myframe.getContentPane().setCursor(blankCursor);
fullscreen fs = new fullscreen();
fs.setOpaque(false);
myframe.getContentPane().add(fs);
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(myframe);
//set font and size
Font myfont = new Font("Space Colony", Font.PLAIN, 40);
//get temp path and add the customer.txt
String tempPath = new String(System.getProperty("java.io.tmpdir"));
String finalPath = tempPath += "customer.txt";
System.out.println(finalPath);
//Dateipfad ersetzen mit dem Pfad, wo die txt Datei liegt.
File aFile = new File(finalPath);
//create Label and add to JFrame
JLabel label = new JLabel("Loading Text...");
label.setForeground(Color.white);
label.setFont(myfont);
label.setBackground(Color.black);
label.setHorizontalAlignment(SwingConstants.CENTER);
myframe.add(label, BorderLayout.CENTER);
try{ Scanner scanner = new Scanner(aFile);
text = scanner.nextLine();
System.out.println(text);
label.setText("Herzlich Willkommen " + text + "!");
scanner.close();
}catch (Exception e){
label.setText("Herzlich Willkommen!");
}
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("dragged");
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
String tempPath = new String(System.getProperty("java.io.tmpdir"));
String finalPath = tempPath += "customer.txt";
File filledFile = new File(finalPath);
try {
PrintWriter writer = new PrintWriter(filledFile);
writer.print("");
writer.close();
System.out.println("geleert");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
System.out.print("Hier");
e1.printStackTrace();
}
System.out.println("klick!");
System.exit(0);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
String tempPath = new String(System.getProperty("java.io.tmpdir"));
String finalPath = tempPath += "customer.txt";
File filledFile = new File(finalPath);
try {
PrintWriter writer = new PrintWriter(filledFile);
writer.print("");
writer.close();
System.out.println("geleert");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
System.out.print("Hier");
e1.printStackTrace();
}
System.exit(0);
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("typed");
}
}
[Oracle Java代碼約定](http://www.oracle.com/technetwork/java/codeconvtoc-136057.html) –
我通常不用java代碼,只是爲了這個項目..所以可以你可能會給我一個簡短的解釋,爲什麼我有這個問題,也許是一個解決方案? –
您使用的所有語言都使用左對齊碼嗎?如果是這樣,他們必須難以閱讀,就像您當前的代碼要讀取一樣困難。考慮編輯你的帖子,使你的代碼符合標準,包括使用縮進,避免過度使用空行等,以便我們可以閱讀和理解它。 –