2012-06-09 56 views

Trả lời

9

Ở đây tìm số Absolute Positioning Tutorials. Xin đừng đọc cẩn thận, là tại sao phương pháp này không được khuyến khích qua sử dụng LayoutManagers

Để thêm nói một JButton để JPanel, bạn có thể sử dụng này:

JButton button = new JButton("Click Me"); 
button.setBounds(5, 5, 50, 30); 
panel.add(button); 

đây thử này chương trình ví dụ:

import java.awt.*; 
import javax.swing.*; 

public class AbsoluteLayoutExample 
{ 
    private void displayGUI() 
    { 
     JFrame frame = new JFrame("Absolute Layout Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel contentPane = new JPanel(); 
     contentPane.setOpaque(true); 
     contentPane.setBackground(Color.WHITE); 
     contentPane.setLayout(null); 

     JLabel label = new JLabel(
      "This JPanel uses Absolute Positioning" 
            , JLabel.CENTER); 
     label.setSize(300, 30); 
     label.setLocation(5, 5); 

     JButton button = new JButton("USELESS"); 
     button.setSize(100, 30); 
     button.setLocation(95, 45); 

     contentPane.add(label); 
     contentPane.add(button); 

     frame.setContentPane(contentPane); 
     frame.setSize(310, 125); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new AbsoluteLayoutExample().displayGUI(); 
      } 
     }); 
    } 
} 

Absolute Positioning Output

+0

"cửa sổ" này là gì? Tôi có thể sử dụng JPanel để thay thế không? – whiteberryapps

+0

Nó không hoạt động ... – whiteberryapps

+0

@ user1441845: DO xem bản chỉnh sửa mới nhất này, cách bạn có thể sử dụng nó với 'JPanel' :-) Tôi quên nói với bạn trước rằng bạn phải viết' panel.setLayout (null) ', mặc dù tôi đã đề cập rằng trong ví dụ mã này bây giờ :-) –

2

Kiểm tra mẫu mã bố trí tuyệt đối này:

Absolute Layout demo

+0

+1, tôi đã thấy hướng dẫn này ở một nơi khác, chỉ cần không thể nhớ nơi :-) –

2

Trong lớp kế thừa khung:

setLayout(null); 

Trong thành phần của bạn:

setLocation(x,y); 
+0

không hoạt động ... – whiteberryapps

+0

+1, mẹo hay :-) –

+0

Mối quan tâm: 1) bạn cần thiết lập bố trí của contentFane của JFrame, không phải là JFrame. 2) Nếu bố trí của vùng chứa là null, thì trình coder hoàn toàn chịu trách nhiệm cho cả vị trí * và * kích thước của các thành phần được thêm vào. 3) Bạn nên thêm một thông báo trước về việc tránh sử dụng bố cục rỗng và định vị tuyệt đối. –

3

Hãy thử những 2 ... kết hợp với nhau ...

setLocation()setBounds()

Thậm chí còn tốt hơn khi sử dụng GroupLayout, được phát triển bởi nhóm NetBeans năm 2005. WindowsBuilder Pro là một công cụ tốt để xây dựng Gui trong java

+0

+1, ước gì tôi có thể nắm bắt GroupLayout, không nghi ngờ gì về một trong những trình quản lý bố cục tốt nhất xung quanh –

+1

@ nIcEcOw: tinkering trong trình soạn thảo NetBeans GUI và kiểm tra mã đã tạo là một cách để thử nghiệm với 'GroupLayout'. – trashgod

+0

@trashgod: Ý tưởng thú vị, kéo/thả trên IDE, để thử nghiệm và chơi với mã, theo cách thông thường. Đó là một lời khuyên tuyệt vời, Cảm ơn :-) –

Các vấn đề liên quan