2012-05-26 42 views
3

你好,我想让这个TextArea粘到窗口大小上,我用鼠标调整它的大小,就像下面的按钮一样。这是完美的工作没有错误的代码,请看看它。如何使JTextArea粘贴到窗口

import java.awt.BorderLayout; 
import java.awt.Component; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 
import java.awt.LayoutManager; 


import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.SwingUtilities; 


public class Rozklady extends JFrame { 

public Rozklady() { 
    super();  
} 

public void createGUI(){ 
    setPreferredSize(new Dimension(400,150)); 
    JPanel jp = new JPanel(); 
// jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); 
    jp.setLayout(new GridLayout(0,1)); 

    JPanel gora = new JPanel(); 
    JPanel dol = new JPanel(); 
    pack(); 
    JTextArea jt1 = new JTextArea("JF1"); 


    gora.add(jt1); 

    jt1.setPreferredSize(new Dimension(getWidth(),getHeight()/2)); 
    dol.setLayout(new BorderLayout()); 

    JPanel lewo = new JPanel(); 
    JPanel prawo = new JPanel(); 
    JPanel srodek = new JPanel(); 



    dol.add(lewo, BorderLayout.EAST); 
    dol.add(prawo,BorderLayout.WEST); 
    dol.add(srodek, BorderLayout.CENTER); 


    lewo.setLayout(new GridLayout(2,2)); 
    prawo.setLayout(new GridLayout(2,2)); 
    srodek.setLayout(new GridLayout(0,1)); 

    for(int i = 0; i < 4; i++){ 
     lewo.add(new JButton(i+"")); 
     prawo.add(new JButton(i+"")); 
     if(i < 3){ 
      srodek.add(new JTextField("JF"+i)); 
     } 
    } 




    jp.add(gora); 
    jp.add(dol); 
    add(jp); 
    setVisible(true); 
    pack(); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
} 





public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new Rozklady().createGUI(); 
      } 
     }); 

} 

} 

回答

3

使用BorderLayoutgora面板。把文本区域中心:

gora.setLayout(new BorderLayout()); 
gora.add(jt1, BorderLayout.CENTER); 
2
// declare a GridLayout in constructor, one component will 'fill the container' 
JPanel gora = new JPanel(new GridLayout()); 
JPanel dol = new JPanel(); 
// this should be called after all components are added! BNI 
pack(); 
JTextArea jt1 = new JTextArea("JF1"); 

// be sure to use a scroll pane for multi-line text components 
gora.add(new JScrollPane(jt1)); 
// .. 

拉伸单个组件来填充可用的空间,可以实现不同的是。 AlexR或GridLayout提到的两种常用方法是使用BorderLayout。有关示例代码,请参见this answer。我更喜欢GridLayout,因为它更短(少打字)。 ;)

相关问题