2008-11-22 20 views
6

Xin chào mọi người. Tôi đang cố gắng tạo một GUI với một nút và một nhãn trên đó. im bằng cách sử dụng một bố trí biên giới và nhãn (trong lĩnh vực phía bắc) cho thấy lên tốt, nhưng nút chiếm phần còn lại của khung hình (đó là trong lĩnh vực trung tâm). bất kỳ ý tưởng làm thế nào để sửa lỗi này?JButton mở rộng để chiếm toàn bộ khung/vùng chứa

Trả lời

9

Bạn phải thêm nút vào bảng khác, sau đó thêm bảng đó vào khung.

Nó chỉ ra các BorderLayout mở rộng những gì từng thành phần là ở giữa

Mã của bạn sẽ trông như thế này bây giờ:

Trước

public static void main(String [] args) { 
    JLabel label = new JLabel("Some info"); 
    JButton button = new JButton("Ok"); 

    JFrame frame = ... 

    frame.add(label, BorderLayout.NORTH); 
    frame.add(button , BorderLayout.CENTER); 
    .... 

} 

Thay đổi nó một cái gì đó như thế này:

public static void main(String [] args) { 
    JLabel label = new JLabel("Some info"); 
    JButton button = new JButton("Ok"); 
    JPanel panel = new JPanel(); 
    panel.add(button); 

    JFrame frame = ... 

    frame.add(label, BorderLayout.NORTH); 
    frame.add(panel , BorderLayout.CENTER); 
    .... 

} 

Trước/sau

Before http://img372.imageshack.us/img372/2860/beforedl1.png After http://img508.imageshack.us/img508/341/aftergq7.png

+0

LayoutManger mặc định trên Bảng điều khiển là gì? FlowLayout? –

+0

FlowLayout, đúng vậy. – OscarRyz

0

Một lần nữa :)


    import javax.swing.*; 

    public class TestFrame extends JFrame { 
     public TestFrame() { 
      JLabel label = new JLabel("Some info"); 
      JButton button = new JButton("Ok"); 
      Box b = new Box(BoxLayout.Y_AXIS); 
      b.add(label); 
      b.add(button); 
      getContentPane().add(b); 

     } 
     public static void main(String[] args) { 
      JFrame f = new TestFrame(); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      f.setLocationRelativeTo(null); 
      f.setVisible(true); 

     } 
    } 
2

Hoặc chỉ cần sử dụng bố trí tuyệt đối. Nó nằm trên Pallet Layouts.

Hoặc kích hoạt nó với:

frame = new JFrame(); 
... //your code here 

// to set absolute layout. 
frame.getContentPane().setLayout(null); 

Bằng cách này, bạn có thể tự do đặt sự kiểm soát bất cứ nơi nào bạn muốn.