【发布时间】:2020-09-14 16:48:24
【问题描述】:
这就是我所拥有的。我正在寻找 ping 一个 IP 地址范围。我的代码在某种意义上可以工作,因为我可以将变量 octet 3 和 4 放入 start 和 end 并在控制台中获得我想要的结果。所有地址都出现在该范围内,并告诉我它们是通过还是失败。我的问题是我试图以多行方式将每个地址传递给同一个 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);
}
});
【问题讨论】:
-
不要使用 JLabel。而是使用 JTextArea,以便您可以附加多行文本。您可以使文本不可编辑且透明,使其看起来更像 Jlabel。