Gyakorlati alapok IV.

Végre ablakozunk! (AWT, Swing, JavaFX)

 

Frame pozícionálása

 

Az előző, Frame című fejezetben megalkottunk egy frame-et:

 

Végeredmény (a monitor bal felső oldalán):

 

www.informatika-programozas.hu - Frame

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Szinte azonnal látjuk a problémát: futtatáskor a frame mindig a monitor bal felső oldalán fog kirajzolódni.

 

A megoldás, hogy gyorsan keresünk a Frame osztályban igazító, pozícionáló metódusokat. Az első rögtön elénk is ugrott:

 

setLocation(int x, int y)

 

Építsük is be a gyorsan a kódba:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import javax.swing.JFrame;

class Window extends JFrame {
    Window() {

        super();

        JFrame frame = new JFrame();
        frame.setSize(400,300);

        frame.setLocation(500, 250);

        frame.setTitle("PJP - Penzes Java Programming");
        frame.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső sarkától 500 és 250 pixelre):

 

www.informatika-programozas.hu - Frame

 

Van egy másik metódusunk is, amelyik teljesen egybefogja a frame 4 alaptulajdonságát:

 

setBounds(int x, int y, int width, int height)

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import javax.swing.JFrame;

class Window extends JFrame {
    Window() {

        super();

        JFrame frame = new JFrame();

        frame.setBounds(500, 250, 400, 300);

        frame.setTitle("PJP - Penzes Java Programming");
        frame.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső sarkától 500 és 250 pixelre):

 

www.informatika-programozas.hu - Frame

 

Ám ezenfelül a koordináták más, külső osztályok segítségével is eltárolhatók. Ilyen például a Dimension osztály (java.awt.Dimension), amelyik a frame méretét (is) menedzselheti...

 

Dimension dimension = new Dimension();
dimension.width = 400;
dimension.height = 300;
frame.setSize(dimension);

 

...és a Point osztály (java.awt.Point), amelyik a pozíciót:

 

Point point = new Point();
point.x = 500;
point.y = 250;
frame.setLocation(point);

 

Nézzük meg az így módosított Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

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

class Window extends JFrame {
    Window() {
        super();
        JFrame frame = new JFrame();
        Dimension dimension = new Dimension();
        dimension.width = 400;
        dimension.height = 300;
        frame.setSize(dimension);
        Point point = new Point();
        point.x = 500;
        point.y = 250;
        frame.setLocation(point);
        frame.setTitle("PJP - Penzes Java Programming");
        frame.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső sarkától 500 és 250 pixelre):

 

www.informatika-programozas.hu - Frame

 

Sőt, létezik egy olyan további külső, Rectangle nevű osztály is (java.awt.Rectangle), amelyik a setBounds() metódushoz hasonlóan, de persze már külön metódusokban képes minden frame alaptulajdonságot eltárolni:

 

Rectangle rectangle = new Rectangle();
rectangle.x = 500;
rectangle.y = 250;
rectangle.width = 400;
rectangle.height = 300;
frame.setBounds(rectangle);

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {

public static void main(String[] args) {
    Window window = new Window();
    }
}

 

Window.java

 

import java.awt.Rectangle;
import javax.swing.JFrame;

class Window extends JFrame {
    Window() {
        super();
        JFrame frame = new JFrame();
        Rectangle rectangle = new Rectangle();
        rectangle.x = 500;
        rectangle.y = 250;
        rectangle.width = 400;
        rectangle.height = 300;
        frame.setBounds(rectangle);
        frame.setTitle("PJP - Penzes Java Programming");
        frame.setVisible(true);
    }
}

 

Végeredmény (a monitor bal felső sarkától 500 és 250 pixelre):

 

www.informatika-programozas.hu - Frame