2014-02-07 8 views
0

저는 Java에 익숙하지 않습니다. 다른 클래스에서 호출 할 때 자바 파일의 모양과 느낌을 변경하려고 할 때 문제가 있습니다. 두 클래스가 있는데, main.javaauth.java입니다. auth.java 파일에서 모양과 느낌을 후광으로 설정했습니다. main.java에서 auth 클래스를 호출하려고하면 (아래 코드 스 니펫이 첨부되어 있음) UI가 변경되지 않습니다. 하지만 public static void main(String[] args) in auth.java을 사용하고 해당 파일을 개별적으로 실행하려고 시도하면 jFrame의 UI가 변경됩니다. 다른 클래스에서 호출 할 때 jFrame의 UI를 변경하는 방법이 있으면 알려 주시기 바랍니다. 그리고 을 another class에서 호출하는 문제가 있습니까? 왜냐하면 우리는 큰 프로젝트를하고 있기 때문에 잠시 동안 인증 프레임을 호출해야 할 것입니다. 미리 감사드립니다. :)다른 클래스에서 호출 할 때 자바가 모양과 느낌이 변경되지 않습니다.

main.java : 이미 느낌의 모양을 변경하기 전에 initComponents라고했습니다

package com.package.name; 
import javax.swing.*; 
import java.awt.*; 

public class auth extends JFrame { 
    public auth() { 
     initComponents(); 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel ("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 
       } catch (ClassNotFoundException e) { 
        e.printStackTrace(); 
       } catch (InstantiationException e) { 
        e.printStackTrace(); 
       } catch (IllegalAccessException e) { 
        e.printStackTrace(); 
       } catch (UnsupportedLookAndFeelException e) { 
        e.printStackTrace(); 
       } 
       setVisible(true); 
       setDefaultCloseOperation(EXIT_ON_CLOSE); 
       pack(); 
      } 
     }); 
    } 
+0

모든 오류 메시지가 ..? –

+0

아니 .. 아니, 그냥 우리가 처음부터이 방법을 시도하고 그게 정말 잘 작동 – Ganesh

답변

3

:

package com.package.name; 
public class main { 
    public static void main(String[] args) { 
     new auth(); 
    } 
} 

이 내 auth.java 코드의 한 부분입니다. 이렇게하면 현재 설치된 모양과 느낌이 해당 구성 요소에 설치됩니다. 자사의 UI를 업데이트로 이동하고 각 구성 요소를 지시하지 않고

, 당신은 단순히라고하는 데, 지금은 ... 예를 들어,

try { 
    UIManager.setLookAndFeel ("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} catch (InstantiationException e) { 
    e.printStackTrace(); 
} catch (IllegalAccessException e) { 
    e.printStackTrace(); 
} catch (UnsupportedLookAndFeelException e) { 
    e.printStackTrace(); 
} 
initComponents(); 
setVisible(true); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
pack(); 

를 모양의 설치를 교환하고 initComponents 방법으로 느낄 수 있었다 . auth 생성자를 호출하기 전에 실제로 EDT의 컨텍스트에 있어야했고 auth은 실제로 Look & Feel에 대한 결정을 내리지 않아야합니다. 이 프레임을 다른 모양과 느낌으로 다시 사용하려면 어떻게됩니까? 대신

public class main { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel ("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 
       } catch (ClassNotFoundException e) { 
        e.printStackTrace(); 
       } catch (InstantiationException e) { 
        e.printStackTrace(); 
       } catch (IllegalAccessException e) { 
        e.printStackTrace(); 
       } catch (UnsupportedLookAndFeelException e) { 
        e.printStackTrace(); 
       } 
       new auth(); 
      } 
     }); 
    } 
} 

public class auth extends JFrame { 
    public auth() { 
     initComponents(); 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     pack(); 
    } 

또한 Code Conventions for the Java Programming Language를 통해 살펴 본다 고려해야 같은, 그것은 훨씬 더 쉽게 읽을 수 코드를 만들 것입니다 할 수있는)

+0

그래요에서 정식 클래스를 호출하려고하면 같은 오래된 자바 laf. 그러나 나는 우리가 각각의 클래스 자체에서 laf을 선언 할 필요가 있다고 생각했다. :) 고마워요. 또 다른 질문입니다. 다른 수업을 듣고 LAF로 바 꾸면 어떨까요? 그냥 새로운 class2() 추가; 주 수업 시간에? – Ganesh

+1

룩앤필을 설치하면 생성 된 모든 새 구성 요소가 사용되므로 처음부터 문제가 있었던 것입니다. 그렇습니다. 객체를 계속 생성하면 동일한 모양과 느낌을 사용하게됩니다. – MadProgrammer