2016-03-11 2 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 компонентов макс.

Смежные вопросы