How can I run a jar application in the background?
<p>I wanted my java jar app to work in background. I want to play a specific game and while app is running, and the app will count the keys I pressed during the game.</p>

<p>Here is my code: </p>

<pre><code>import java.awt.Font;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Osu extends JFrame implements KeyListener,ActionListener {

    File plik = new File("clicks.txt");
    static ArrayList&lt;Integer&gt; liczby = new ArrayList&lt;Integer&gt;();
    static JLabel label1 = new JLabel("");
    static JLabel label2 = new JLabel("");
    static int tab[];
    public static final int WIDTH=200, HEIGHT=200;
    public String click1="";
     static int licznik1,licznik2;
     static int a=0;

    static int liczba=0,liczba1=0;

public Osu(){


    setTitle("Osu Click Counter");

    setSize(WIDTH,HEIGHT);

    addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
              doPliku();
          }
        });


    addKeyListener(this);
    setResizable(false);
    setFocusable(true);
    setVisible(true);
    setLayout(null);
    draw();

    pack();
    label1.setFont(new Font("Courier New", Font.BOLD,25));
    label2.setFont(new Font("Courier New", Font.BOLD, 25));
    label1.setBounds(0, 20, 100, 20);
    label2.setBounds(0, 40,100, 20);
    add(label1);
    add(label2);



}

public void draw(){

    try {

    setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("background.png")))));
    } catch (IOException e) {
        System.out.println("nie znaleziono obrazu kulki");
        e.printStackTrace();
    }

}

public static  void update(){

    while(true){
        label1.setText("E " + licznik1);
        label2.setText("W " + licznik2);
        }
}

public static void doPliku(){
    try{
        PrintWriter zapis = new PrintWriter("clicks2.txt");
        zapis.println( licznik1 );
        zapis.println( licznik2);
        zapis.close();
        }


    catch(FileNotFoundException e){ 
    }
}


public static void scan() throws NumberFormatException, IOException{


      String nazwaPliku = "clicks2.txt";

      try {
          BufferedReader br = new BufferedReader(new FileReader(nazwaPliku));
          String linia = null;
          while ((linia = br.readLine()) != null) {
              int liczba = Integer.parseInt(linia.trim());
              liczby.add(liczba);
          }
      } catch (Exception e) {

      }


}
    public static void check(){
     if(liczby.size() !=0){
         licznik1=liczby.get(0);
      licznik2=liczby.get(1);
      liczby.clear();
     }
    }



    public static void main(String[] args) throws NumberFormatException, IOException  {

        scan();
        check();
    new Osu();
    update();

}



    @Override
    public void keyPressed(KeyEvent e) {
        if( e.getKeyCode() == KeyEvent.VK_E){
            licznik1++;
        }
        if( e.getKeyCode() == KeyEvent.VK_W){
            licznik2++;
        }


    }
    @Override
    public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }
    @Override
    public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }

    }
</code></pre>