2013-07-31 24 views
5

Tôi đang cố gắng tạo GUI cho Ứng dụng ngân hàng trong JAVA. Sử dụng bố trí tuyệt đối cho khung hình của tôi là dễ dàng để tạo ra bất cứ điều gì nếu tôi sử dụng WindowBuilder trong nhật thực nhưng vấn đề với nó là khi tôi thay đổi kích thước khung hình. Vì vậy, đó là lý do tại sao tôi đã chọn sử dụng gridBagLayout nơi tôi có thể sử dụng weightx/y để giúp công việc của tôi dễ dàng hơn. Tôi loại quên làm thế nào để sử dụng bố trí này đúng cách vì vậy tôi đã bị mắc kẹt tại nỗ lực đầu tiên của tôi để thêm một JPanel trong bảng điều khiển chính gridBagLayout của tôi.gridBagLayout vs absoluteLayout

Đây là những gì tôi muốn đạt được (thực hiện trong bố trí tuyệt đối):

enter image description here

Và đây là những gì tôi đã (thực hiện trong GridBagLayout):

enter image description here

Nếu ai đó có thể chỉ cho tôi những gì tôi phải thay đổi/thêm khi tôi thêm bảng flowLayout đầu tiên mà tôi sẽ đánh giá cao. Về cơ bản khoảng trắng của ô đầu tiên - tôi muốn loại bỏ nó và kiểm soát nó!

Dưới đây là một số mã:

setBackground(new Color(255, 255, 255)); 
    GridBagLayout gridBagLayout = new GridBagLayout(); 
    gridBagLayout.columnWidths = new int[]{0, 0}; 
    gridBagLayout.rowHeights = new int[]{0, 0}; 
    gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; 
    gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE}; 
    setLayout(gridBagLayout); 

    JPanel panel = new JPanel(); 
    FlowLayout flowLayout = (FlowLayout) panel.getLayout(); 
    flowLayout.setVgap(15); 
    flowLayout.setHgap(15); 
    flowLayout.setAlignment(FlowLayout.LEFT); 
    panel.setBackground(new Color(51, 102, 204)); 
    GridBagConstraints gbc_panel = new GridBagConstraints(); 
    gbc_panel.anchor = GridBagConstraints.NORTH; 
    gbc_panel.fill = GridBagConstraints.HORIZONTAL; 
    gbc_panel.gridx = 0; 
    gbc_panel.gridy = 0; 
    add(panel, gbc_panel); 

    JLabel label = new JLabel("European Bank"); 
    label.setForeground(Color.WHITE); 
    label.setFont(new Font("Tahoma", Font.PLAIN, 25)); 
    panel.add(label); 

    JLabel lblYourBankAccounts = new JLabel("Your Bank Accounts"); 
    lblYourBankAccounts.setForeground(new Color(153, 153, 153)); 
    lblYourBankAccounts.setFont(new Font("Tahoma", Font.PLAIN, 19)); 
    GridBagConstraints gbc_label = new GridBagConstraints(); 
    gbc_label.insets = new Insets(0, 60, 0, 0); 
    gbc_label.anchor = GridBagConstraints.LINE_START; 
    gbc_label.gridx = 0; 
    gbc_label.gridy = 1; 
    add(lblYourBankAccounts, gbc_label); 

    JScrollPane scrollPane = new JScrollPane(); 
    GridBagConstraints gbc_scrollPane = new GridBagConstraints(); 
    gbc_scrollPane.insets = new Insets(10, 60, 10, 10); 
    gbc_scrollPane.weightx = 1.0; 
    gbc_scrollPane.weighty = 1.0; 
    gbc_scrollPane.gridx = 0; 
    gbc_scrollPane.gridy = 2; 
    gbc_scrollPane.fill = GridBagConstraints.BOTH; 
    add(scrollPane, gbc_scrollPane); 
+3

Tôi khuyên bạn nên sử dụng trình thiết kế biểu mẫu trực quan, dễ dàng hơn và nhanh hơn làm thủ công. eclipse, jformdesigner, netbeans, có rất nhiều lựa chọn. – Robadob

+0

Tôi đã giải quyết được vấn đề của mình. Tôi đã nhận xét /*gridBagLayout.columnWidths = new int [] {0, 0}; \t \t gridBagLayout.rowHeights = new int [] {0, 0}; \t \t gridBagLayout.columnWeights = new double [] {1.0, Double.MIN_VALUE}; \t \t gridBagLayout.rowWeights = new double [] {1.0, Double.MIN_VALUE}; */ Tôi đang sử dụng trình bổ sung WindowBuilder trong nhật thực. Thực tế 50% mã này được tạo. Có lẽ đó là lý do tại sao tôi không hiểu tại sao tôi lại có khoảng trắng đó. – Chris

+2

@Chris: Bạn có thể làm cho mã của bạn dễ đọc hơn, bằng cách tạo một hàm đơn giản, thêm thành phần vào vùng chứa đã chỉ định, có 'GridBagLayout' làm 'Trình quản lý bố cục' như được hiển thị trong [ví dụ] này (http://stackoverflow.com/a/17919032/1057230) –

Trả lời

1

Tôi muốn giới thiệu việc xây dựng trong Layout Customizer trong Netbeans. Thật dễ dàng để học hỏi từ nó. Hy vọng nó giúp.

Đối với loại sự cố của bạn, hãy thử điều chỉnh trọng số của thành phần Bạn muốn strech.

Đây là ảnh chụp màn hình cách thực hiện: http://goo.gl/TBPY9i

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