Domanda Come posizionare il modulo sullo schermo centrale?


Sono uno sviluppatore .Net ma in qualche modo ho avuto il compito di creare una semplice applicazione in java per qualche motivo in più. Sono stato in grado di creare quell'applicazione ma il mio problema è come posso centrare il modulo sullo schermo all'avvio dell'applicazione?

Ecco il mio codice:

private void formWindowActivated(java.awt.event.WindowEvent evt) 
{
        // Get the size of the screen
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

        // Determine the new location of the window
        int w = this.getSize().width;
        int h = this.getSize().height;
        int x = (dim.width-w)/2;
        int y = (dim.height-h)/2;

        // Move the window
        this.setLocation(x, y);
}

Il codice sopra funziona bene, ma il problema è che ho visto il modulo spostarsi dallo schermo più centrale al centro. Ho anche provato ad aggiungere quel codice formWindowOpened evento e mostra ancora la stessa azione. C'è un modo migliore per questo? Proprio come dentro .NET Application c'è un CenterScreen Position. O se il codice sopra è corretto, su quale evento lo metto?

Grazie per aver letto questo.


44
2018-03-03 03:59


origine


risposte:


Basta impostare la posizione relativa a null dopo aver chiamato il pacchetto su JFrame, il gioco è fatto.

per esempio.,

  JFrame frame = new JFrame("FooRendererTest");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().add(mainPanel); // or whatever...
  frame.pack();
  frame.setLocationRelativeTo(null);  // *** this will center your app ***
  frame.setVisible(true);

97
2018-03-03 04:04



L'esempio seguente centra una cornice sullo schermo:

package com.zetcode;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import javax.swing.JFrame;


public class CenterOnScreen extends JFrame {

    public CenterOnScreen() {

        initUI();
    }

    private void initUI() {

        setSize(250, 200);
        centerFrame();
        setTitle("Center");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private void centerFrame() {

            Dimension windowSize = getSize();
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            Point centerPoint = ge.getCenterPoint();

            int dx = centerPoint.x - windowSize.width / 2;
            int dy = centerPoint.y - windowSize.height / 2;    
            setLocation(dx, dy);
    }


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                CenterOnScreen ex = new CenterOnScreen();
                ex.setVisible(true);
            }
        });       
    }
}

Per centrare una cornice su uno schermo, dobbiamo ottenere il locale ambiente grafico. Da questo ambiente, determiniamo il punto centrale. In combinazione con le dimensioni del fotogramma, gestiamo per centrare la cornice. Il setLocation() è il metodo che sposta la cornice nella posizione centrale.

Si noti che questo è in realtà ciò che il setLocationRelativeTo(null) fa:

public void setLocationRelativeTo(Component c) {
    // target location
    int dx = 0, dy = 0;
    // target GC
    GraphicsConfiguration gc = getGraphicsConfiguration_NoClientCode();
    Rectangle gcBounds = gc.getBounds();

    Dimension windowSize = getSize();

    // search a top-level of c
    Window componentWindow = SunToolkit.getContainingWindow(c);
    if ((c == null) || (componentWindow == null)) {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
        gcBounds = gc.getBounds();
        Point centerPoint = ge.getCenterPoint();
        dx = centerPoint.x - windowSize.width / 2;
        dy = centerPoint.y - windowSize.height / 2;
    }

  ...

  setLocation(dx, dy);
}

8
2017-08-05 14:53



Cambia questo:

public FrameForm() { 
    initComponents(); 
}

a questa:

public FrameForm() {
    initComponents();
    this.setLocationRelativeTo(null);
}

2
2018-06-24 09:28



public class Example extends JFrame {

public static final int WIDTH = 550;//Any Size
public static final int HEIGHT = 335;//Any Size

public Example(){

      init();

}

private void init() {

    try {
        UIManager
                .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

        SwingUtilities.updateComponentTreeUI(this);
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        setSize(WIDTH, HEIGHT);

        setLocation((int) (dimension.getWidth() / 2 - WIDTH / 2),
                (int) (dimension.getHeight() / 2 - HEIGHT / 2));


    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }

}
}

1
2017-12-19 03:25



spero che questo sarà utile.

mettilo sopra il codice sorgente:

import java.awt.Toolkit;

e poi scrivi questo codice:

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
    int lebar = this.getWidth()/2;
    int tinggi = this.getHeight()/2;
    int x = (Toolkit.getDefaultToolkit().getScreenSize().width/2)-lebar;
    int y = (Toolkit.getDefaultToolkit().getScreenSize().height/2)-tinggi;
    this.setLocation(x, y);
}

in bocca al lupo :)


0
2018-03-09 16:59



In realtà, non è necessario codice per rendere il modulo arrivare a Centercreen.

Basta modificare le proprietà di jframe   
Segui i seguenti passaggi per modificare:

  • tasto destro del mouse sul modulo
  • modificare FormSize criterio per generare il codice di ridimensionamento
  • quindi modificare la posizione del modulo X-200 Y- 200

Hai finito. Perché prendere il dolore della codifica. :)


0
2018-06-22 03:40



Se si utilizza il modulo di scelta rapida IDE NetBeans, quindi

Proprietà -> Codice -> check out Genera centro


0
2018-01-05 07:31



Usando questa funzione puoi definire la tua posizione vincente

setBounds(500, 200, 647, 418);

-2
2017-07-01 08:10



Prova a usare questo:

this.setBounds(x,y,w,h);

-2
2018-03-31 21:30