Java - 更改JTextField的位置

时间:2016-03-11 22:03:23

标签: java jframe

搜索栏是'search_bar',我正在尝试使用'j_panel.add(search_bar,BorderLayout.WEST);将其移到框的左侧。但它不会从中间移动。关于如何做到这一点的任何想法?感谢

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

2 个答案:

答案 0 :(得分:2)

j_panel.setLayout(new FlowLayout());
j_panel.add(search_bar, BorderLayout.WEST);

BorderLayout.WEST不适用于FlowLayout。如果要使用BorderLayout,请使用一个而不是FlowLayout。

答案 1 :(得分:0)

使用FlowLayout时,您无法完全按照自己喜欢的方式定位组件 通过使用BorderLayout,您必须只有5个组件,因为BorderLayout最多可以处理5个组件。