• Frames/JFrames auf höchsten Focus setzen

    Hallo Leute,

    bitte seid nicht ärgerlich, wenn ich etwas falsch mache, das hier ist mein erstes Tutorial...
    Also, wir brauchen ja erstmal ein Frame, das angezeigt wird...
    Code :
    1
    2
    3
    
    Frame f = new Frame("Focus-Test");
    f.setSize(300,400);
    f.setVisible(true);
    Dann will ich ja, das sich kein anderes "normales" Fenster (zum Taskmanager kommen wir noch ) darüber schieben kann...
    Code :
    1
    
    f.setAlwaysOnTop(true);
    Wenn ihr später mit dem Programm noch was anstellen wollt, lest bitte bei 2. weiter, andernfalls bei 1.

    1.Damit sich das Frame immer auf höchster Ebene platziert, programmieren wir das auch genau so:
    Code :
    1
    2
    3
    
    while(true){
    f.show();
    }

    2.Wenn das Fester nebenher noch was machen sollte, setzen wir die while-Schleife in ein Runnable:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    new Runnable(){
    public void run(){
    while(true){
    f.show();
    }
    }
    }.run();

    Wer einen langsamen Computer hat, kann natürlich noch sleeps einbauen.

    Wer keine Lust hat, diesen Code zu jedem seiner Fenster dazuzuschreiben, kann folgende Klasse benutzen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    import java.awt.*;
     
    public class FrameOnTop
    {
        public FrameOnTop(final Frame f)
        {
            f.setAlwaysOnTop(true);
            new Runnable(){
                public void run() {
                    while(true){
                        try{
                            f.show();
                        }catch(Exception e){}
                    }
                }
            }.run();
        }
    }
    Um diese Klasse zu verwenden, muss man nur folgendes schreiben:
    Code :
    1
    
    new FrameOnTop(f); //f ist das zu fokussierende Fenster

    So, das wars jetzt mal, ich hoffe ich hab euch helfen können!
    Dann viel Spaß mit dem Code!
    Aber stellt keinen Unsinn damit an, den Taskmanager zu überdecken ist gefährlich!

    Ciao,

    Jellysheep

    Also, ich hab euch jetzt mal diese Funktion und eine weitere (um ein Frame in den Vollbildmodus wechseln zu lassen) in eine Klasse gestellt und poste sie hier mal. Ihr dürft aber kein "setResizable(false);" hinter den Vollbild-Modus-Aufruf schreiben, sonst kann man das Vollbildfenster verschieben...
    Viel Spaß damit!

    P.S.: Zum Verwenden einfach "frameOptions.fullscreen(Frame);" schreiben.
     
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken content/attachments/53542-focustest.jpg.html  
    Angehängte Dateien Angehängte Dateien


     
    Kommentare 1 Kommentar
    1. Avatar von Funresort
      Funresort -
      Mal was kleines zum spielen

      Auführen und Spaß haben

      Bei dem der Java 1.7 hat siehts schöner aus

      Code :
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      
      import java.awt.Dimension;
      import java.awt.EventQueue;
      import java.awt.Toolkit;
       
      import javax.swing.JFrame;
      import java.awt.Cursor;
      import java.util.Random;
       
      import javax.swing.JButton;
      import java.awt.event.ActionListener;
      import java.awt.event.ActionEvent;
      import javax.swing.JTextField;
      import javax.swing.SwingConstants;
      import java.awt.Font;
      import javax.swing.JPasswordField;
      import java.awt.event.MouseAdapter;
      import java.awt.event.MouseEvent;
       
       
       
      public class YesPlease{
       
          private static Random r = new Random();
          private static JFrame frame;
          private static Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
          private static int i1;
          private static int i2;
          static JButton btnClose;
          private JTextField txtTryToGet;
          private JTextField txtOrSayMe;
          private JPasswordField passwordField;
       
          /**
           * Launch the application.
           */
          public static void main(String[] args) {
              EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      try {
                          YesPlease window = new YesPlease();
                          window.frame.setVisible(true);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              });       
              
              chab();
              
          }
       
          /**
           * Create the application.
           */
          public YesPlease(){
              initialize();
          }
       
          /**
           * Initialize the contents of the frame.
           */
          private void initialize(){
              frame = new JFrame();
              frame.getContentPane().setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
              i1 = r.nextInt(d.width - 89);
              i2 = r.nextInt(d.height - 23);
              frame.getContentPane().setLayout(null);
              
              
              btnClose = new JButton("Close");
              btnClose.addMouseListener(new MouseAdapter() {
                  @Override
                  public void mousePressed(MouseEvent arg0) {
                      System.exit(0);
                  }
              });
              btnClose.setOpaque(true);
              btnClose.setVisible(false);
              btnClose.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent arg0) {
                      System.exit(0);
                  }
              });
              btnClose.setBounds(i1, i2, 89, 23);
              frame.getContentPane().add(btnClose);
              
              txtTryToGet = new JTextField();
              txtTryToGet.setEditable(false);
              txtTryToGet.setFont(new Font("Tahoma", Font.BOLD, 23));
              txtTryToGet.setHorizontalAlignment(SwingConstants.CENTER);
              txtTryToGet.setText("Try to get the Button!");
              txtTryToGet.setBounds(434, 282, 373, 70);
              frame.getContentPane().add(txtTryToGet);
              txtTryToGet.setColumns(10);
              
              txtOrSayMe = new JTextField();
              txtOrSayMe.setEditable(false);
              txtOrSayMe.setFont(new Font("Tahoma", Font.BOLD, 11));
              txtOrSayMe.setText("Or say me Password:");
              txtOrSayMe.setBounds(434, 356, 136, 20);
              frame.getContentPane().add(txtOrSayMe);
              txtOrSayMe.setColumns(10);
              
              passwordField = new JPasswordField();
              passwordField.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent arg0) {
                      if (passwordField.getText().equals("hihi")){
                          System.exit(0);
                      }
                  }
              });
              passwordField.setBounds(588, 356, 98, 20);
              frame.getContentPane().add(passwordField);
              
              frame.setUndecorated(true);
              frame.setOpacity(0.90f);
              frame.setAlwaysOnTop(true);
              frame.setBounds(0, 0, d.width, d.height);
              
       
       
          }
          private static void chab() {
              int c2 = 600;
              for (int count = 0; count <= 2000; count++){
                  try {
                      Thread.sleep(c2);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  if (c2 > 10){
                  c2 = c2 - 10;
                  }
                  i1 = r.nextInt(d.width - 89);
                  i2 = r.nextInt(d.height - 23);
                  if (i2 == 0){
                      i2 = i2 + 123;
                  }
                  if (i1 == 0){
                      i1 = i1 + 123;
                  }
                  btnClose.setVisible(true);
                  btnClose.setBounds(i1, i2, 89, 23);
                  frame.setVisible(true);
              }
          }
      }