2016-06-14 3 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

[Условные обозначения Java-кода Oracle] (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(); 

и удаления частей, где весь экран был добавлен панель к раме.

Смежные вопросы