2012-11-19 4 views
0

자바 스윙 응용 프로그램을 만들었습니다. 내 주요 수업 전체 SwingUtilities.invokeLater(new Runnable() 물건 않습니다. 모든 것을 내가 사용한 적이있다JSplitPane - 응용 프로그램을 두 개로 분할 했습니까?

내 두 번째 클래스 :

JPanel container = (JPanel) getContentPane(); 

그런 다음 호출하여 모든 비트를 추가 ... 지금이 전체 '응용 프로그램'을 좀하고 싶습니다

container.add([name of component] 

JSplitPane으로 그러므로 나는 한쪽면과 다른 쪽면에 나의 적용을 원한다.

어떻게하면됩니까?

public class one{ 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
      JFrame f = new App("main"); 
      f.setSize(1920,1080); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      f.setVisible(true); 
} 


public class App extends JFrame { 
     SuppressWarnings("empty-statement") 
     public App(String title) { 
     super(title); 
     JPanel container = (JPanel) getContentPane(); 

     container.setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
     JButton new button = new JButton("new"); 
     c.gridx = 0; 
     c.gridy = 0; 
     c.gridwidth = 2; 
     //ENTER LOTS OF CONSTRAINTS 
     container.add(new, c); 

     JButton next to button = new JButton("next to"); 
     c.gridx = 1; 
     c.gridy = 1; 
     c.gridwidth = 2; 
     //ENTER LOTS OF CONSTRAINTS 
     container.add(new, c); 

     //I HAVE LOTS OF SWING COMPONENTS AND BUTTONS about 30 

} 

이 모든 것을 분할 창의 왼쪽에 넣으시겠습니까?

어떻게하면됩니까?

+2

한 가지 방법은 두 용기에 넣어 콘텐츠 (예를 들어 JPanel)을 분할 창에 추가 한 다음 분할 창을 내용 분할 창에 추가하십시오. 더 나은 도움을 받으려면 코드 조각 및 설명이 아닌 현재 코드의 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

더 좋습니까? 방금 모의 코드를 썼다. – Jay

+0

main 메소드를 내부에두기 위해 왜 'one' 클래스를 만들어야하는지 알 수 없습니다. –

답변

5
  1. , 당신은 대신, JSplitPane의 인스턴스를 만듭니다 별도의 JPanel
  2. 모든 사용자 응용 프로그램 구성 요소와 논리를 이동, 어떤 기능을 추가하지 않는, JFrame에서 연장 "주"를 추가하지 마십시오 그것에 패널은

업데이트 ...

  • 가하는 JFrame의 인스턴스를 만들고 여기에 분할 구획을 추가 그것은 당신에게 보조 창을 추가

    enter image description here

    public class TestSplitPane { 
    
        public static void main(String[] args) { 
         new TestSplitPane(); 
        } 
    
        public TestSplitPane() { 
         EventQueue.invokeLater(new Runnable() { 
          @Override 
          public void run() { 
           try { 
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
           } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
           } 
    
           JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
           pane.setLeftComponent(new MainPane()); 
           pane.setRightComponent(new JLabel("On the right")); 
    
           JFrame frame = new JFrame(); 
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
           frame.setLayout(new BorderLayout()); 
           frame.add(pane); 
           frame.pack(); 
           frame.setLocationRelativeTo(null); 
           frame.setVisible(true); 
          } 
         }); 
        } 
    
        public class MainPane extends JPanel { 
    
         public MainPane() { 
          setLayout(new GridBagLayout()); 
          GridBagConstraints c = new GridBagConstraints(); 
          JButton newButton = new JButton("new"); 
          c.gridx = 0; 
          c.gridy = 0; 
          c.gridwidth = 2; 
          //ENTER LOTS OF CONSTRAINTS 
          add(newButton, c); 
    
          JButton next = new JButton("next to"); 
          c.gridx = 1; 
          c.gridy = 1; 
          c.gridwidth = 2; 
          //ENTER LOTS OF CONSTRAINTS 
          add(next, c); 
         } 
        } 
    } 
    
  • +0

    언제든지 SSCCE를 입력 해주십시오. – Jay

    +0

    완료 ... – MadProgrammer

    +0

    방금 ​​내 코드에 메소드를 적용했고 효과가있었습니다! – Jay