Как передать переменную с несколькими выходами в Jlabel - PullRequest
0 голосов
/ 27 мая 2020

Вот что у меня есть. Я хочу проверить диапазон IP-адресов. Мой код работает в том смысле, что я могу ввести свои переменные, октеты 3 и 4 для начала и конца и получить желаемый результат в консоли. Все адреса попадают в диапазон и говорят мне, проходят они или нет. Моя проблема в том, что я пытаюсь передать каждый адрес одному и тому же JLabel в многострочном смысле, как показано в консоли. С помощью этого кода я получаю только последний адрес в JLabel. Что мне не хватает? Опять же, я получаю желаемый результат в консоли, просто нужно получить тот же результат в JLabel. Пример:

Консоль показывает
10.91.50.1
10.91.50.2
10.91.50.3
10.91.50.4

JLabel возвращает только : 10.91.50.4

См. Код ниже :

btnCheckPing1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evt) {
            //System.out.println("Check Ping Range");
            /*
                start ip 10.0.a.b       end ip 10.0.x.y
            */
            a = lowX.getText();  // 3rd octet, first group
            b = lowY.getText();  // 4th octet, first group
            x = highX.getText(); // 3rd octet, second group
            y = highY.getText(); // 4th octet, second group
            String pingThis = "";

            int convertA = Integer.parseInt(a);
            int convertB = Integer.parseInt(b);
            int convertX = Integer.parseInt(x);
            int convertY = Integer.parseInt(y);

            if(convertA == convertX) {
                System.out.println("3rd Octet is in range");
                // can ping range


                for(int i = convertB; i <= convertY; i++) {
                    //System.out.println("10.92." + x + "." + i);
                    pingThis = "10.92." + x + "." + i;/
                    //System.out.println(pingThis);
                    try {
                    InetAddress pingRange = InetAddress.getByName(pingThis);
                    boolean reachableGroup = pingRange.isReachable(100);

                    if(reachableGroup == true) {
                        //System.out.println(pingRange + " is valid");
                   /////////Output to JLabel will go here./////////////
                        lblRangeOut.setText(pingThis);

                    } else {
                        //System.out.println(pingRange + " is not valid");
                    }
                } catch (Exception e) {
                    //Nothing goes here
                }}
            } else {
                // cannot ping range
                System.out.println("3rd octet out of range");
            }

            //System.out.println("10.92." + a + "." + b + " " + "10.92." + x + "." + y);
        }
    });

1 Ответ

0 голосов
/ 27 мая 2020

вы используете сеттер, который отменяет предыдущее значение. Что вам нужно сделать, так это добавить свой вывод в конец предыдущего, например:

lblRangeOut.setText(lblRangeOut.getText() + pingThis)

Также, как упоминалось в комментарии camickr, JLabel не был бы моим первым выбором в первую очередь: ) Видимо, как он тоже указал. JLabel не принимает никаких разделителей строк. по этим причинам JTextArea будет намного лучше, и код будет выглядеть примерно так:

txtRangeOut.setText(txtRangeOut.getText() + System.lineSeparator() + pingThis)

В любом случае основной причиной замены предыдущего значения было то, что установщик переопределял его. Таким образом, новое значение должно состоять как из предыдущего значения, так и из добавленной строки.

...