2016-03-11 74 views
1

搜索栏是'search_bar',我试图用'j_panel.add(search_bar,BorderLayout.WEST)将它移动到框的左侧;'但它不会从中间移动。任何想法如何做到这一点?由于Java - 更改JTextField的位置

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
j_panel.setLayout(new FlowLayout()); 
j_panel.add(search_bar, BorderLayout.WEST); 

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

+0

谢谢,它现在工作! – W22

+0

@ W22如果有效,那么你应该考虑接受答案。 – user3437460

0

使用FlowLayout时,无法准确定位组件的方式。
通过使用BorderLayout您必然只有5个组件,因为BorderLayout最多可以处理5个组件。