2017-12-22 6 views
0

저는 Java의 초보자이며 JScrollPane 빌드를 이해하려고합니다. 지금까지 다음 코드를 가지고 있지만 JScrollPane을 호출하는 데 문제가 있습니다. 도와주세요. 미리 감사드립니다.전달 및 이름 변수

public class DemoTest { 

    public String sTEXT = null; 
    public JTextArea jTEXTAREA = null; 
    public JScrollPane jPANE = null; 
    public JFrame jFRAME = null; 

    public static void main(String[] args) { 
     DemoTest demo = new DemoTest(); 
    } 

    public DemoTest() { 
     setText(); 
     setPane(); 
     setFrame(); 
    } 

    public void setFrame() { 
     JFrame jFRAME = new JFrame("Demo"); 

     jFRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jFRAME.setSize(350, 300); 
     jFRAME.setLocationRelativeTo(null); 
     jFRAME.setVisible(true); 
     jFRAME.add(jPANE); // **THIS SEEMS TO BE THE PROBLEM** 
    } 

    public void setPane() { 
     JScrollPane jPANE = new JScrollPane(jTEXTAREA); 
    } 

    public void setText() { 
     JTextArea jTEXTAREA = new JTextArea(); 
     jTEXTAREA.setText("Hello World!"); 
     jTEXTAREA.setEditable(false); 
    } 
} 
+1

사용 this.jFRAME (또는 클래스 변수가 존재하는 같은 이름의 변수를 작성하지 않습니다) 그렇지 않으면 당신이 그 변수를 초기화하지 않습니다 클래스 변수에 할당 할 수 있습니다. – Zachary

+2

위의 코드에서 많은 초보자 실수를하고 있습니다. 실수는 GUI 프로그래밍을 시작하기 전에 기본 사항을 먼저 백업하고 연구하는 것이 좋습니다. –

답변

0

다양한 스윙 개체를 만들려고하면 멤버 변수 (클래스 수준)에 할당하는 대신 새 로컬 변수를 만들었습니다. 동일한 이름의 멤버 변수와 로컬 변수가있는 경우 this.VAR_NAME = ...;을 사용하여 멤버 변수에 할당 할 수 있습니다. 가변 범위에 대한 이해를 돕기 위해 기본 내용을 잘 설명하는 Scope of Variables in Java 게시물을 읽어보십시오.

public class DemoTest { 

    public String   sTEXT   = null; 
    public JTextArea  jTEXTAREA  = null; 
    public JScrollPane  jPANE   = null; 
    public JFrame   jFRAME   = null; 

    public static void main(String[] args) { 
     DemoTest demo = new DemoTest(); 
    } 

    public DemoTest(){ 
     setText(); 
     setPane(); 
     setFrame(); 
    } 

    public void setFrame(){ 
     jFRAME = new JFrame ("Demo"); 
     jFRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jFRAME.setSize(350,300); 
     jFRAME.setLocationRelativeTo(null); 
     jFRAME.setVisible(true); 
     jFRAME.add(jPANE); 

    } 

    public void setPane(){ 
     jPANE = new JScrollPane(jTEXTAREA); 
    } 

    public void setText(){ 
     jTEXTAREA= new JTextArea(); 
     jTEXTAREA.setText("Hello World!"); 
     jTEXTAREA.setEditable(false); 
    } 
}