简体   繁体   中英

Java - Change location of JTextField

The search bar is 'search_bar', I'm trying to move it to the left hand side of the box with 'j_panel.add(search_bar, BorderLayout.WEST);' but it doesn't move from the middle. Any ideas on how to do this? Thanks

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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.SpringLayout;

public class Main {

    public static void main(String args[]) {

        JFrame jfrm = new JFrame("Test");
        jfrm.setSize(1024, 600);
        jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jfrm.setResizable(false);

        JTextField search_bar = new JTextField("Search...", 25);
        search_bar.setPreferredSize(new Dimension(1,35));

        JTextArea body = new JTextArea(32,83);
        body.setPreferredSize(new Dimension());
        body.setEditable(false);

        JButton search_button = new JButton("Search");

        JPanel j_panel = new JPanel();
        j_panel.setLayout(new FlowLayout());
        j_panel.add(search_bar, BorderLayout.WEST);
        j_panel.add(search_button, null);
        j_panel.add(body, BorderLayout.EAST);
        j_panel.setBackground(Color.gray);

        search_button.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e) {
                final String text = search_bar.getText();
                body.setText(text);
            }   
        });

        jfrm.setContentPane(j_panel);
        jfrm.setVisible(true);
    }
}
 j_panel.setLayout(new FlowLayout()); j_panel.add(search_bar, BorderLayout.WEST); 

BorderLayout.WEST is not applicable for FlowLayout . If you want to use a BorderLayout, use one instead of FlowLayout.

You cannot position components exactly the way you'd like when using FlowLayout .
By using BorderLayout you are bound to have only 5 components, because BorderLayout can handle 5 components max.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM