Добавление текстовой области в JavaFX при использовании TextField - PullRequest
0 голосов
/ 24 мая 2018

Я уже упоминал, что возвращаюсь в JavaFX только из-за проекта колледжа на последнем курсе.Я создал IP / Mac адресный искатель, скажем.В рамках этого я буду запускать команду arp и возвращать информацию из команды arp.Я столкнулся с проблемой слишком маленького текстового поля для всей возвращаемой информации arp.Когда я помещаю текстовую область, моя сетка изменяется и не выравнивается.Кто-нибудь сможет посоветовать, как добавить текстовую область в?Область, о которой я говорю, находится в разделе **

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Main extends Application {

    Stage window;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        window = primaryStage;
        window.setTitle("Wi-FI Connection Checker");

        //GridPane with 10px padding around edge
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(10, 10, 10, 10));
        grid.setVgap(10);
        grid.setHgap(10);

        //Name Label - constrains use (child, column, row)
        Label nameLabel = new Label("Find my IP Address:");
        nameLabel.setId("bold-label");
        GridPane.setConstraints(nameLabel, 0, 0);

        //Search IP Address 
        Button IPlookupButton =new Button("Search for IP");
        GridPane.setConstraints(IPlookupButton, 3, 0);

        //Name Input
        TextField nameInput = new TextField();
        nameInput.setPromptText("IP Address");
        GridPane.setConstraints(nameInput, 1, 0);

        IPlookupButton.setOnAction(event -> {
            try {
                InetAddress thisIp = InetAddress.getLocalHost();
                nameInput.setText("IP:" + thisIp.getHostAddress());
            } catch (Exception e) {
                e.printStackTrace();
            }
        });

        //MAC Address Lookup Label
        Label passLabel = new Label("MAC Address Look UP:");
        GridPane.setConstraints(passLabel, 0, 1);

        //MAC Address Input
        TextField passInput = new TextField();
        passInput.setPromptText("MAC Address");
        GridPane.setConstraints(passInput, 1, 1);

        //Search MAC Address 
        Button MacAddressButton =new Button("Search for MAC Address");
        GridPane.setConstraints(MacAddressButton, 3, 1);


        //MAC Address Input
        TextField MacFound = new TextField();
        GridPane.setConstraints(MacFound, 1, 2);


        //MAC Vendor Label
        Label vendorLabel = new Label("Manufacturer Make:");
        GridPane.setConstraints(vendorLabel, 0, 2);

        //MAC Address Search 
        MacAddressButton.setOnAction(event -> {
            try {

            String MacAddress = passInput.getText();


            URL oracle = new URL("https://api.macvendors.com/"+ MacAddress);
            BufferedReader in = new BufferedReader(
            new InputStreamReader(oracle.openStream()));

            String inputLine;
            while ((inputLine = in.readLine()) != null)
                MacFound.setText(inputLine);
                MacFound.setPrefWidth(MacFound.getText().length() * 7);
            in.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
            }
        );

        //Wi-Fi Connection Button
        Button WifiButton = new Button("Search my Wi-Fi");
        GridPane.setConstraints(WifiButton, 1, 3);

        TextField WifiInfo = new TextField();
        //textArea.setPrefRowCount(4);
        GridPane.setConstraints(WifiInfo, 1, 4);

        **WifiButton.setOnAction(event -> {

            try {
                Process process = Runtime.getRuntime().exec("arp -a");
                process.waitFor();
                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                int i = 0;
                while (reader.ready()) {
                    i++;
                    String ip = reader.readLine();
                    if (i >= 4) {
                        ip = ip.substring(2, 56) + "\n";
                    }
                    WifiInfo.setText(ip);
                    WifiInfo.setPrefWidth(WifiInfo.getText().length() * 7);
                }
            } catch (IOException | InterruptedException ioe) {
                ioe.printStackTrace();
            }**

        });

        //Add everything to grid
        grid.getChildren().addAll(nameLabel, IPlookupButton, nameInput, passLabel, passInput,MacAddressButton, MacFound, vendorLabel, WifiButton, WifiInfo);

        Scene scene = new Scene(grid, 600, 300);
        scene.getStylesheets().add("colour.css");
        window.setScene(scene);
        window.show();
    }

}

1 Ответ

0 голосов
/ 24 мая 2018

Попробуйте изменить WinfiInfo на TextArea.

TextArea WifiInfo = new TextArea();

Затем добавьте / измените код соответственно.

grid.getChildren().addAll(nameLabel, IPlookupButton, nameInput, passLabel, passInput, MacAddressButton, MacFound, vendorLabel, WifiButton);

VBox root = new VBox(grid, WifiInfo);

Scene scene = new Scene(root, 600, 300);

Этот код делает корень VBox и добавляет GridPane и TextArea к нему.Вы можете установить отступы или поля на TextArea.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...