Gyakorlati alapok IV.

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

 

Label további tulajdonságai

 

Az előző 2 fejezetben...

...alapszinten megismertük a Label-objektumot és legegyszerűbb működtető metódusait. Ebben a fejezetben folytatjuk ismerkedésünket néhány további tulajdonságával, rutinjával.

 

Bevezetésképpen induljunk ki az egyik releváns alapkódból:

 

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;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

class Window extends JFrame {
    Window() {
        super();
        JFrame frame = new JFrame();
        JLabel label = new JLabel();
        label.setText("PJP - Penzes Java Programming");
        frame.add(label);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setVerticalAlignment(SwingConstants.CENTER);
        Center center = new Center();
        frame.setSize(400, 300);
        frame.setTitle("PJP - Penzes Java Programming");
        center.setCenter(frame);
        frame.setVisible(true);
    }
}

 

Center.java

 

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

public class Center {

    void setCenter(JFrame frame) {
        Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
        int x = (int) center.getX() - (frame.getWidth() / 2);
        int y = (int) center.getY() - (frame.getHeight() / 2);
        Point ablakCenter = new Point(x, y);
        frame.setLocation(ablakCenter);
    }
}

 

Végeredmény (a monitor közepén / felbontástól függetlenül/):

www.informatika-programozas.hu - Frame + Label

 

A következő kódban egyesítünk egy középrezárt label objektumot egy szintén középrezárt ikonnal. Ehhez először nyilvánvalóan lementjük az ikont egy dedikált helyre (itt Y:/search.jpg), majd 2 függvényhívással létrehozzuk és összehangoljuk a objektumokat:

 

Icon icon = new ImageIcon("Y:/search.jpg");
JLabel label = new JLabel("", icon, JLabel.CENTER);

 

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.*;
import javax.swing.*;

class Window extends JFrame {
    Window() {
    super();
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Center center = new Center();
    frame.setSize(400, 300);
    frame.setTitle("PJP - Penzes Java Programming");
    Icon icon = new ImageIcon("Y:/search.jpg");
    JLabel label = new JLabel("", icon, JLabel.CENTER);
    frame.add(label);
    center.setCenter(frame);
    frame.setVisible(true);
    }
}

 

Center.java

 

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

public class Center {

    void setCenter(JFrame frame) {
        Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
        int x = (int) center.getX() - (frame.getWidth() / 2);
        int y = (int) center.getY() - (frame.getHeight() / 2);
        Point ablakCenter = new Point(x, y);
        frame.setLocation(ablakCenter);
    }
}

 

Végeredmény (a monitor közepén / felbontástól függetlenül/):

www.informatika-programozas.hu - Frame + Label

 

Láthatjuk, hogy a label szövegét paraméterként üresen hagytuk ("")...

 

JLabel label = new JLabel("", icon, JLabel.CENTER);

 

...azonban szöveggel kitöltve...

 

JLabel label = new JLabel("Search!", icon, JLabel.CENTER);

 

...természetesen az is meg fog jelenni a frame-en:

 

www.informatika-programozas.hu - Frame + Label

 

A betű (font) alaptulajdonságait a setFont() függvény segítségével állíthatjuk be. Például változtassuk meg a fonttípust, a betűméretet és állítsuk a szöveget félkövérre:

 

label.setFont(new Font("Verdana", Font.BOLD, 21));

 

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;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

class Window extends JFrame {
    Window() {
        super();
        JFrame frame = new JFrame();
        JLabel label = new JLabel();
        label.setText("PJP - Penzes Java Programming");
        frame.add(label);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setVerticalAlignment(SwingConstants.CENTER);

        label.setFont(new Font("Verdana", Font.BOLD, 21));
        Center center = new Center();
        frame.setSize(400, 300);
        frame.setTitle("PJP - Penzes Java Programming");
        center.setCenter(frame);
        frame.setVisible(true);
    }
}

 

Center.java

 

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

public class Center {

    void setCenter(JFrame frame) {
        Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
        int x = (int) center.getX() - (frame.getWidth() / 2);
        int y = (int) center.getY() - (frame.getHeight() / 2);
        Point ablakCenter = new Point(x, y);
        frame.setLocation(ablakCenter);
    }
}

 

Végeredmény (a monitor közepén / felbontástól függetlenül/):

www.informatika-programozas.hu - Frame + Label

 

A label háttérszínét a setBackground(Color.x) függvénnyel állíthatjuk be, ám előtte egy true utasítással aktiválnunk kell a setOpaque() függvényt is, mivel a label objektumok alapértelmezésben nem átlátszóak. Az utóbbi függvény feladata tehát a label komponens átlátszóvá tétele (például label1.setOpaque(true);), másként a setBackground(Color.x) hívásának nem lesz eredménye.

 

A setBackground(Color.x) függvény használatát a 2 db frame című fejezetből vett példa alapján nézzük meg, amely során a 2 label háttérszíne lesz megváltoztatva:

 

label1.setOpaque(true);
label1.setBackground(Color.YELLOW);
label2.setOpaque(true);
label2.setBackground(Color.WHITE);

 

Jól láthatjuk, hogy a háttérszín csakis a beállított határokig változik meg:

 

label1.setBounds(50, 50, 300, 20);
label2.setBounds(50, 75, 150, 20);

 

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.*;
import javax.swing.*;

class Window extends JFrame {
    Window() {
    super();
    JFrame frame = new JFrame();
    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    label1.setText("PJP - Penzes Java Programming...");
    label2.setText("...is the best of all...");
    label1.setBounds(50, 50, 300, 20);
    label2.setBounds(50, 75, 150, 20);
    label1.setOpaque(true);
    label1.setBackground(Color.YELLOW);
    label2.setOpaque(true);
    label2.setBackground(Color.WHITE);
    frame.add(label1);
    frame.add(label2);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Center center = new Center();
    frame.setSize(400, 300);
    frame.setTitle("PJP - Penzes Java Programming");
    center.setCenter(frame);
    frame.setLayout(null);
    frame.setVisible(true);
    }
}

 

Center.java

 

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

public class Center {

    void setCenter(JFrame frame) {
        Point center = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
        int x = (int) center.getX() - (frame.getWidth() / 2);
        int y = (int) center.getY() - (frame.getHeight() / 2);
        Point ablakCenter = new Point(x, y);
        frame.setLocation(ablakCenter);
    }
}

 

Végeredmény (a monitor közepén / felbontástól függetlenül/):

www.informatika-programozas.hu - Frame + Label