Gyakorlati alapok IV.

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

 

Eseménykezelés + Button + IP-cím

 

Az előző, Eseménykezelés + Button + exit című fejezetben megtanultuk egy gombesemény egyszerű lekezelését. Ebben a fejezetben a gombeseményhez DNS-lekérdezést fogunk hozzárendelni, ennek rutinja és magyarázatai pedig a Label + IP-cím című fejezetben került kidolgozásra. Az említett 2 fejezet főrutinjait tehát egybegyúrjuk, azonban a zavarmentes működéshez 1-2 további változtatást is szükséges tennünk, például néhány objektumot osztályszintre kell helyeznünk, hogy Window osztály összes metódus lássa:

 

class Window extends JFrame {
    String hostName = "x";
    String ipNumber = "";
    JFrame frame = new JFrame();
    JButton button = new JButton("Resolve!");
    JLabel label = new JLabel();

 

Láthatóan visszahoztunk egy label-objektumot is. A gombesemény hatására a label eredeti szövege ("The IP-number is...") megváltozik a konkrét IP-címre (label.setText(ipNumber);). A hostnevet a String hostName objektumba írtunk bele. (A teljes kiosztott hostnevet személyi okokból nem osztom meg: String hostName = "x";.)

 

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.*;

class Window extends JFrame {
    String hostName = "x";
    String ipNumber = "";
    JFrame frame = new JFrame();
    JButton button = new JButton("Resolve!");
    JLabel label = new JLabel();

Window() {
    super();
    button.setBounds(150, 100, 90, 25);
    label.setBounds(150, 140, 200, 25);
    frame.add(button);
    frame.add(label);
    label.setText("The IP-number is...");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    button.addActionListener(event -> buttonAction());
    Center center = new Center();
    frame.setSize(400, 300);
    frame.setTitle("PJP - Penzes Java Programming");
    center.setCenter(frame);
    frame.setLayout(null);
    frame.setVisible(true);
}

private void buttonAction() {
    try{
        ipNumber = java.net.InetAddress.getByName(hostName).getHostAddress();
        label.setText(ipNumber);
    }catch(Exception ex){
        System.out.println("Resolution was not successful.");
        }
    }
}

 

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 - Eseménykezelés + button + IP-cím

www.informatika-programozas.hu - Eseménykezelés + button + IP-cím