2010-08-08 2 views
3

Netbeans GUI 작성기로 GUI (ParameterUI)를 생성 했으므로 이제 그 인스턴스를 만들고 표시하려고합니다. 그러나, 어떤 창이 나타납니다 발생하지 않습니다 Java - setVisible (true)가 GUI에 아무런 영향을 미치지 않습니다.

ParameterUI gui = new ParameterUI(); 
gui.setVisible(true); 

를 사용하여 ... 테스트는 이러한 명령 후, gui.isVisible()가 true를 반환하지만 gui.isValid()가 false임을 보여줍니다. gui.revalidate()를 호출해도 아무 효과가 없습니다. ParameterUI 클래스

는 생성자 메소드 넷빈즈 의해 생성

public class ParameterUI extends javax.swing.JPanel { 
    public ParameterUI() { 
     initComponents(); 
    } 
} 

initComponents 단순히 각 JPanel의 등이 배치 될 위치의리스트 단순히이다.

이상한 점은 내가 http://netbeans.org/kb/docs/java/gui-functionality.html의 튜토리얼로 연습 GUI를 만들었을 때 GUI가 메인 메소드가없고 GUI가 자체적으로 나타난 것처럼 메인 클래스로 설정되었다는 것입니다.

불행히도 저는 GUI가없는 초보자입니다. (필자는 적절한 손으로 만든 GUI를 만드는 방법을 배울 시간이 없기 때문에 빌더를 사용하고 있습니다.)하지만 누군가 내 GUI를 표시하는 방법을 말해 줄 수 있습니까? ? 필요하다면 나는 ...

편집을 더 많은 코드를 제공 할 수 있습니다 ... 나는

JFrame window = new JFrame(); 
ParameterUI gui = new ParameterUI(); 
window.setContentPane(gui); 
window.pack(); 
window.setVisible(true); 

이 JFrames에 관한 짧은 튜토리얼을 읽은했지만, 아무것도 변경하지 않는 것

+0

대신 JFrame의의 이름을 넣으려면, 그냥 넷빈즈 빌더를 사용하기 시작하고 난 데스크톱 응용 프로그램을 통해 중간입니다. 날 믿어, 난 netbeans GUI 빌더와 함께 많은 문제에 직면했습니다! 더 많은 코드와 정보를 제공 할 수 있습니까? 메인 클래스 (GUI 클래스)는 FrameView입니까, SingleFrameApplication입니까 ... 등입니까? –

답변

1

당신은 JFrame의를 사용하고 또는 당신이 넷빈즈와 데스크톱 응용 프로그램을 만들 않았다? 데스크톱 응용 프로그램을 만든 경우 Netbeans은 자체 클래스를 사용하기 때문에 많은 문제점이 있습니다 ... 따라서 JFrame을 사용하는 것이 좋습니다. 당신이 JPanel을 확장하고 있기 때문에

SwingUtilities.invokeLater(new Runnable() { 
      public void run() 
      { 
       ParameterUI gui = new ParameterUI(); 
       gui.setVisible(true); 
      } 
     }); 

, 당신이 볼 수 있도록 JFrame의에 당신의 패널을 넣어해야합니다 UI를 시작하면 당신이 시도 할 수있는 방법, 모든 확인합니다. 이 작업을 수행하려면 netbeans에서 패키지를 마우스 오른쪽 단추로 클릭하고 "New JFrame"을 선택하십시오. 이제 패널로 돌아가서 왼쪽 여백 (프로젝트, 파일 등) 아래에 항목이 있어야합니다. "Inspector"라는 이름을 클릭하고 구성 요소의 트리보기를보아야합니다. 표시 할 JPanels를 마우스 오른쪽 단추로 클릭하고 "Copy"를 선택하십시오.방금 생성 된 JFrame으로 돌아가서 왼쪽 여백에서 "Inspector"버튼을 찾아서 클릭하고 "[JFrame]"항목을 가져야합니다. 해당 항목을 마우스 오른쪽 버튼으로 클릭하고 붙여 넣기를 선택하십시오. 이제 작성한 패널이 표시됩니다.

다음 패널을 볼 단순히 내가 도울 수있을 ParameterUI

+0

EDT가 영향을 미치지 않습니다. – TheLQ

+0

데스크톱 응용 프로그램이 아닙니다. – Stella

+0

네, 마침내 작동합니다! 고마워요. 지금이 나이에 나를 귀찮게하고 있어요. – Stella

3

setVisible()Component에서이 구성 요소에 플래그를 설정합니다 (이 시점에서 다른 요소 중에서 사용자가 실제로 신경 쓰지는 않음). 이 플래그는 구성 요소가 표시되어야하는지 여부를보기 위해 구성 요소가 들어있는 컨테이너에 의해 점검됩니다.

setVisible() on Window은 화면이 화면에 표시되는지 여부를 제어합니다. 이제는 창을 보이거나 사라지게 만드는 것뿐입니다. 일반적으로 표시하기 전에 크기와 위치를 지정해야합니다. 여기에는 pack()setLocationRelativeTo()이 유용합니다.

그래서 하나 Window (아마 JFrame 또는 JDialog)를 확장 할 수 있으며, ParameterUI 당신의 GUI를 볼 수 있거나 윈도우에 포함되어야하고 창 대신 ParameterUI 인스턴스 setVisible(true)를 호출해야합니다. 그렇게하는 간단한 예제 (안된)입니다 :

// expected to be called on the AWT/Event Dispatch Thread 
public void show(ParameterUI ui) { 
    JFrame frame = new JFrame(); 
    frame.setLayout(new BorderLayout()); 
    frame.add(ui, BorderLayout.CENTER); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); // position in the center of the screen 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    frame.setVisible(true); 
} 
+0

ParameterUI는 JPanel이 아닌 JFrame을 확장하는 것처럼 보입니다. 그래서 그것을 볼 수 있도록 Window (JFrame 또는 그 정도)가 필요합니다. – extraneon

+0

NetBeans가 코드를 생성하는 방식이므로 ParameterUI는 JPanel을 확장합니다. 음, 어떻게 Window/JFrame에 넣을 수 있습니까? JFrame을 확장하기 위해 그것을 변경해야합니까, 아니면 어떻게해서 "gui"인스턴스를 추가해야합니까? – Stella

+0

패널을 JFrame으로 이동하는 방법을 설명하는 답변을 수정했습니다. – npinti

관련 문제