2016-03-11 91 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個組件。