2017-12-08 5 views
0

내 프로젝트에 2 개의 .java 파일이 있고 그 중 하나에 다른 .java 파일에있는 열거 형의 값을 (예 : 텍스트 영역에) 표시하려고합니다. 변수에 void 출력 가져 오기

가 된 .java 파일을 첫 번째 (또는 주)의 코드 - frm1.java : (그냥 내가 코드의 대부분의 관련 부분을 고려하지만, 필요한 경우, 나는 완전히 넣을 수있는 표시) txtrBlabla가 JTextArea에와 ListNets 두번째 된 .java 파일의 이름에 주어진 이름입니다

// Things HERE 
    ListNets interfaceLoader = new ListNets(); 
    txtrBlabla.setText(names); 

.

그리고 여기 둘째 된 .java 파일의 내용 - ListNets.java : 당신이 볼 수 있듯이

public class ListNets { 


    public static void main(String args[]) throws SocketException { 
     Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); 
     for (NetworkInterface netint : Collections.list(nets)) 
      displayInterfaceInformation(netint); 
    } 

    public static void displayInterfaceInformation(NetworkInterface netint) throws SocketException { 
     out.printf("Display name: %s\n", netint.getDisplayName()); 
     out.printf("Name: %s\n", netint.getName()); 
     Enumeration<InetAddress> inetAddresses = netint.getInetAddresses(); 
    String names = inetAddresses.toString(); //<-- This line is the only thing not "copy-pasted" 
    } 
} 

, 두 번째 코드는 복사 & 붙여 넣기입니다. 나는 txtrBlabla.setText(names); 줄을 사용하여 텍스트 영역으로 설정하려고 다음 변수에 열거의 결과를 얻을 수있는 방법의 부하와 시도했지만 항상 오류 메시지가 표시했습니다

이름을 변수로 해결할 수없는

주 Java 파일. 나는 또한 "보이드 (voids)"과 관련이 있지만 시도한 결과가 없음을 보았습니다. 나는 또한 변수를 변경하려고했지만 둘 다 작동하지 않습니다.

참고 : 저는 자바의 시동기지만 실제로 작동하지 않는 이유를 알고 싶습니다. 철자를 쓰고 죄송합니다. 미리 감사드립니다.

편집 : 또한 다음과 같은 된 .java 파일에 최선을 다하는 노력 :

public static void main(String args[]) throws SocketException { 
     Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); 
     for (NetworkInterface netint : Collections.list(nets)) 
      displayInterfaceInformation(netint); 
    } 

    static void displayInterfaceInformation(NetworkInterface netint) throws SocketException { 
     out.printf("Display name: %s\n", netint.getDisplayName()); 
     out.printf("Name: %s\n", netint.getName()); 
     Enumeration<InetAddress> inetAddresses = netint.getInetAddresses(); 
    String names = inetAddresses.toString(); 
    } 

     txtrBlabla.setText(displayInterfaceInformation.names); 
+5

프로그래밍을 처음 접한다면 UI 디자인으로 시작하는 것이 좋습니다. 변수 범위 지정과 같은 기본 사항에 먼저 초점을 맞추어야합니다. – Carcigenicate

+1

'names'는 당신의'displayInterfaceInformation' 메쏘드의 지역 변수이고 frm1 클래스에는 보이지 않습니다. – Pieter

+0

@Pieter 그리고 그것을 어떻게 보이게 할 수 있습니까? 참고 : 나는 또한 모든 것을 동일한 .java 파일에 넣으려고 시도했습니다. 당신이 볼 수 있도록 편집 할 것입니다. –

답변

0

는 사실이 라인은 필요하지 않습니다 :

String names = inetAddresses.toString(); 

오히려 나는의 InetAddress의 열거가 문자열로 개체를 변환하고 나중에 사용을 위해 그것을 반환합니다. 라인을 따라 뭔가 :

public static String getNetworkInformation(NetworkInterface netint) throws SocketException { 
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses(); 
    StringJoiner joiner = new StringJoiner(","); 
    while(inetAddresses.hasMoreElements()) { 
     InetAddress inetAddress = inetAddresses.nextElement(); 
     joiner.add(inetAddress.toString()); 
    } 
    return joiner.toString(); 
} 

그런데 : 자바에서 의미있는 문자열을 생성하지 않습니다 toString()를 호출하여 문자열로 java.util.Enumeration 변환하려고합니다.

이 코드 here in JDoodle을 사용해 볼 수 있습니다. 이 Doodle에있는이 소스 코드는 출력을 콘솔에 출력하지만, 귀하의 경우에는 출력을 UI에 출력하면됩니다.

+0

두 번째 java 파일에서이 변경 작업을 수행 하시겠습니까? 또는 첫 번째 txtrBlabla.setText (joiner); 또는 비슷한? Thx –

+0

@ LuisM. 내가 제안한 변경은'ListNets.java'에서 이루어져야합니다. 모든 네트워크 인터페이스를 순환하여'getNetworkInformation (NetworkInterface netint)'메소드의 출력에 합치려면 추가 코드가 필요합니다. 이 코드는 위의 대답에서 언급 한 기념일 로고에 있습니다. 기념일 로고를 실행하고 코드가하는 것을 볼 수 있습니다. –

+0

그래, 고마워,하지만 무슨 일이 계속 나는 텍스트에 결과를 보여줄 수 없다는 것을, 어떤 아이디어? –

0

변수 범위에서 사용자의 문제입니다.

이것 좀 봐 :

http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm

변수의 범위는 변수 이름을 참조 할 수있는을 통해 프로그램의 일부입니다. (Ivor Horton의 Beginning Java 2, Ivor Horton의 JDK 5 버전)

선언 전에 변수를 참조 할 수 없습니다.

당신은 여러 곳에서 변수를 선언 할 수

  • 을 클래스 본문에서 클래스 필드로. 여기에 선언 된 변수를 클래스 수준 변수라고합니다.
  • 메서드 또는 생성자의 매개 변수로 사용됩니다.
  • 메서드의 본문 또는 생성자의 본문에서.
  • while이나 while 블록과 같은 명령문 블록 내.

가변 범위에 대한 자세한 내용은 링크로 이동하십시오.

관련 문제