2016-06-14 12 views
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"); 
} 


} 
+1

[Oracle Java Code Conventions](http://www.oracle.com/technetwork/java/codeconvtoc-136057.html) –

+0

私は通常Javaでコードを作成せず、このプロジェクト用に用意したものです。なぜ私はその問題を抱えているのか、それともおそらく解決策があるのか​​を簡単に説明してください。 –

+0

あなたがコードする言語はすべて左揃えのコードを使用しますか?そうであれば、あなたの現在のコードを読むのは難しいように、読みにくいものでなければなりません。あなたのコードがインデントの使用、空行の過度の使用の回避などを含む標準に準拠するように投稿を編集して、それを読み、理解できるようにしてください。 –

答えて

0

非常に最初の行を変更して作業しました!実際に私はそれがなぜ大きな違いになるのか分かりませんが、今は完全に機能しています。 は、だから今私が持っている:

public class fullscreen extends JFrame implements MouseListener, MouseMotionListener, KeyListener { 

public fullscreen() { 
addMouseListener(this); 
addMouseMotionListener(this); 
addKeyListener(this); 
setFocusable(true); 
} 

と進路変更の

JFrame myframe = new JFrame(); 

へ:

fullscreen myframe = new fullscreen(); 

とフルスクリーンフレームにパネルを追加した部分を削除します。

関連する問題