How to make JTextArea Stick to the window

霸气de小男生 提交于 2020-01-11 09:58:10

问题


Hello I would like to make this TextArea stick to the windows size whene I resize it by mouse, the same way as lower buttons does. This is the code it is perfectly working no bugs, please have a glance at it.

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

}

}

回答1:


Use BorderLayout for you gora panel. Put text area to the center:

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));
// ..

Stretching a single component to fill the available space can be achieved various was. Two common ways are using either BorderLayout as mentioned by AlexR or GridLayout. See this answer for sample code. I prefer GridLayout because it is shorter (less typing). ;)



来源:https://stackoverflow.com/questions/10764798/how-to-make-jtextarea-stick-to-the-window

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!