如何将一个有多个输出的变量传递给Jlabel?

问题描述 投票:0回答:1

我的情况是这样的。我想ping一系列的IP地址。我的代码的工作原理是,我可以把我的变量,八位数3和4的开始和结束,并在控制台中得到我想要的结果。所有的地址都会出现在这个范围内,并告诉我它们是通过还是失败。我的问题是,我试图将每个地址以多行的方式传递给同一个JLabel,就像控制台中显示的那样。 使用这段代码,我只得到最后一个地址输出到JLabel中。我到底漏掉了什么? 同样,我在Console中得到了我想要的结果,只是需要在JLabel中得到同样的结果。举个例子。

Console显示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);
        }
    });
java swing jlabel
1个回答
-1
投票

你使用的是setter,也就是覆盖以前的值。那么,你需要做的是在前一个变量的末尾追加你的输出,比如。

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

正如camickr在评论中提到的,JLabel不会是我的第一选择 :) 显然,正如他也指出的那样。由于这些原因,JTextArea会更好,代码看起来会像这样。

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

不管怎么说,替换之前的值的主要原因是setter会覆盖它。所以新的值需要由之前的值和附加的字符串组成。

© www.soinside.com 2019 - 2024. All rights reserved.