如何使JTextArea粘贴到窗口

时间:2012-05-26 08:32:57

标签: java swing layout jtextarea layout-manager

你好我想让这个TextArea坚持使用鼠标调整大小的窗口尺寸,就像下按钮一样。这是完全没有错误的代码,请一目了然。

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();
            }
        });

}

}

2 个答案:

答案 0 :(得分:3)

BorderLayout面板使用gora。将文本区域放在中心位置:

gora.setLayout(new BorderLayout());
gora.add(jt1, BorderLayout.CENTER);

答案 1 :(得分: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或BorderLayout提到的GridLayout。有关示例代码,请参阅this answer。我更喜欢GridLayout,因为它更短(更少打字)。 ;)