2013-01-12 1 views
2

저는 편집자로 일하고 있습니다. 나는 그것을 위해 자바 스윙을 사용하고있다. 나는 으로 JTextArea을 삽입했습니다. 나는 JScrollPane의 중간에 특정 크기의 jtextarea을 배치하고자합니다. 이렇게하려면 setLocation 기능을 사용했습니다. 하지만이게 효과가 없나요?jscrollpane에서 jtextarea의 위치와 크기가 설정되어 있지 않습니다.

public class ScrollPaneTest extends JFrame { 
private Container myCP; 
private JTextArea resultsTA; 
private JScrollPane scrollPane; 
private JPanel jpanel; 

public ScrollPaneTest() { 
resultsTA = new JTextArea(50,50); 
resultsTA.setLocation(100,100); 
jpanel=new JPanel(new BorderLayout()); 
jpanel.add(resultsTA,BorderLayout.CENTER); 

scrollPane = new JScrollPane(jpanel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
scrollPane.setPreferredSize(new Dimension(800, 800)); 
scrollPane.setBounds(0, 0, 800, 800); 

setSize(800, 800); 
setLocation(0, 0); 
myCP = this.getContentPane(); 
myCP.setLayout(new BorderLayout()); 
myCP.add(scrollPane); 
setVisible(true); 
addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent e) { 
     System.exit(0); 
    } 
}); 
} 
public static void main(String[] args) { 
    new ScrollPaneTest(); 
    } 
} 
+2

도 참조 [* 사용 방법 스크롤 창] * (http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html)와 [ examples] (http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html#eg)가 있습니다. – trashgod

+1

'WindowListener'를 사용하는 대신'JFrame # setDefaultCloseOperation'을 사용하고, 코드를 더 깨끗하게 만듭니다. IMHO – MadProgrammer

답변

7

당신은 단순히 JScrollPaneJTextArea를 추가해야하고, CENTERJPanel의이 BorderLayout을 가지고에 추가합니다.

AbsolutePositioning을 사용하지 마십시오. 적절한 LayoutManager을 추가하고 LayoutManager가 화면에서 컴포넌트 위치 지정 및 크기 조정을 위해 나머지 작업을 수행하도록합니다. AbsolutePositioning의 첫 번째 단락에서 언급 한 바와 같이

는 사용 가치가없는 구성 요소, 대한 null 레이아웃을 사용할 수있는 setBounds(...) 방법을 사용하기 위해서는, 관점을 제공했다. 귀하가 제공 한 코드 예제에서는 레이아웃을 사용하고 모든 점에서 잘못된 AbsolutePositioning을 사용하여 두 가지를 함께 수행하고 있습니다. 예에서 IT를 :-)

을하고 내 조언 STOP은 레이아웃 우려가 크기 JTextArea에 충분한 ROWS 및 귀하가 제공 COLUMNS입니다 제공.

코드 예 :

import java.awt.*; 
import javax.swing.*; 

public class Example 
{ 
    private JTextArea tarea; 

    private void displayGUI() 
    { 
     JFrame frame = new JFrame("JScrollPane Example"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

     JPanel contentPane = new JPanel(); 
     contentPane.setLayout(new BorderLayout(5, 5)); 

     JScrollPane textScroller = new JScrollPane(); 
     tarea = new JTextArea(30, 30); 
     textScroller.setViewportView(tarea); 

     contentPane.add(textScroller); 
     frame.setContentPane(contentPane); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       new Example().displayGUI(); 
      } 
     }); 
    } 
} 
+2

+1 레이아웃 ... null 레이아웃에 대한 조언 포함 –