2011-01-30 37 views
14
  1. Có thể đặt lề/đệm trong GridBagLayout cho toàn bộ hàng/cột không? Tôi sử dụng inset trên đối tượng ràng buộc tuy nhiên, bằng cách sử dụng phương pháp này tôi cần phải đặt padding từ dưới cùng trên mỗi thành phần duy nhất.Lề/đệm trong GridBagLayout Java

  2. Có thể đệm tất cả nội dung trong JFrame không? Bởi vì bây giờ mọi thành phần được liên kết với khung.

constraints.weightx = 2; 
    constraints.weighty = 1; 
    constraints.fill = GridBagConstraints.BOTH; 
    addComponent(this, layout, constraints, questionPanel = new QuestionPanel(), 0, 0, 1, 1); 

    constraints.weightx = 1; 
    constraints.weighty = 1; 
    constraints.fill = GridBagConstraints.BOTH; 
    addComponent(this, layout, constraints, categoryPanel = new CategoryPanel(), 0, 1, 1, 1); 

    constraints.weightx = 1; 
    constraints.weighty = 0; 
    constraints.fill = GridBagConstraints.HORIZONTAL; 
    addComponent(this, layout, constraints, answerPanel = new AnswerPanel(), 1, 0, 2, 1); 

    constraints.weightx = 1; 
    constraints.weighty = 2; 
    constraints.fill = GridBagConstraints.BOTH; 
    addComponent(this, layout, constraints, tabPane = new JTabbedPane(), 2, 0, 2, 1); 

    constraints.weightx = 1; 
    constraints.weighty = 0; 
    constraints.fill = GridBagConstraints.NONE; 
    constraints.anchor = GridBagConstraints.SOUTHEAST; 
    addComponent(this, layout, constraints, buttonPanel = new ButtonPanel(), 3, 1, 1, 1); 

Tôi đang sử dụng một phương pháp addComponent tin:

private void addComponent(Container context, GridBagLayout _layout, GridBagConstraints   _constraints, Component component, int row, int column, int width, int height) { 
    _constraints.gridx = column; 
    _constraints.gridy = row; 
    _constraints.gridwidth = width; 
    _constraints.gridheight = height; 

    _layout.setConstraints(component, _constraints); 
    context.add(component); 
} 

Làm thế nào tôi có thể thêm một số "không khí (padding/margin)" giữa các tế bào?

+0

Tôi muốn nói có và có ... Tuy nhiên, không cần xem xét một số mã, thật khó để nói chắc chắn. Bạn có thể đăng một đoạn mã không ?. Nó sẽ giúp rất nhiều, câu hỏi của bạn rất chung chung. – chahuistle

Trả lời

6

Theo như tôi biết, cách duy nhất để làm việc đầu tiên để đặt đối tượng Insets cho mỗi ràng buộc ... (Bố cục viết tay rõ ràng không được thiết kế để dễ dàng trong Java: P) Tuy nhiên, có một cách rất đơn giản để thực hiện thứ hai, mà không gây rối xung quanh với bất kỳ Insets hoặc bất cứ điều gì: thiết lập bố trí của contentPane thành FlowLayout với bất kỳ khoảng trống dọc và ngang nào bạn muốn, thêm một bảng vào contentPane, và thay vì thêm mọi thứ vào contentPane, hãy thêm nó vào bảng điều khiển mới của bạn.

+0

Cảm ơn bạn :) Tôi có lẽ sẽ có ác mộng về insets .. – LuckyLuke

30

Sử dụng inset tài sản của GridBagConstraints lớp

Ví dụ:

GridBagConstraints c = new GridBagConstraints(); 
c.insets = new Insets(3,3,3,3); 

Hy vọng điều này là những gì bạn đang tìm kiếm.