2013-11-09 6 views
0

У меня есть 3 JPanels, у которых нет компонентов и есть только изображения Graphics2D на них. Позиционирование изображений не было проблемой. Но у меня есть проблема, пытаясь привести их в нужный порядок на JFrame. Это код, я использую:Компоненты компоновки в JPanel

setLayout(new BorderLayout()); 
    JPanel panel = new JPanel(); 
    BoxLayout bxLayout=new BoxLayout(panel,BoxLayout.Y_AXIS); 

    setLayout(new BorderLayout()); 
    CaptionPanel cPanel= new CaptionPanel("Евгений",new Font("Serif",Font.BOLD,20),20,0); 
    cPanel.setPreferredSize(new Dimension(220,70)); 

    BFieldPanel bField = new BFieldPanel(20,20); 
    bField.setPreferredSize(new Dimension(220,220)); 

    BStatePanel bsPanel=new BStatePanel(20,0); 
    bsPanel.setPreferredSize(new Dimension(220,70)); 

    panel.add(cPanel); 
    panel.add(bField); 
    panel.add(bsPanel); 

    add(panel,BorderLayout.CENTER); 

Мне нужна эффективный метод, чтобы заставить менеджер компоновки рассмотреть размер панели. setPrefferedSize(), как я видел, имеет слишком ужесточение закона в расчете на выборку панели формы. U can find the result i want

+0

Полезно иметь представление о том, чего вы хотите. Что у вас сейчас есть? В чем вопрос? – axiopisty

+0

Ссылка на результат Я хочу получить имена «U может найти результат, который я хочу». обсуждаемый. Я не совсем понимаю, что правильно вам нужно. Я покажу вам все, но мне нужно время, чтобы сделать правильную показную презентацию моей проблемы с блоками кода. – Evgeniy

ответ

1

Вы можете извлечь выгоду из чтения this. Неясно, каков ваш вопрос, потому что вы не описали, какая у вас проблема, вы только что описали, что хотите, а не то, что не работает или что мешает вам делать то, что вы хотите сделать.

Я думаю, что вы ищете пример того, как получить компоненты (в вашем случае CaptionPanel, BFieldPanel и BStatePanel) для выравнивания по вертикали с помощью BorderLayout. Поскольку у меня нет компонентов в вашем примере, этот пример показывает в целом, как использовать макет границы:

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

public class Main { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame("Example"); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.getContentPane().add(getPanel()); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }); 
    } 

    private static JPanel getPanel() { 
     JPanel panel = new JPanel(new BorderLayout()); 
     panel.add(new JLabel("Top"), BorderLayout.NORTH); 
     panel.add(new JLabel("Center"), BorderLayout.CENTER); 
     panel.add(new JLabel("Bottom"), BorderLayout.SOUTH); 
     panel.setPreferredSize(new Dimension(400, 300)); 
     return panel; 
    } 
} 
+0

Спасибо за внимание. Мне нужно показать некоторые изображения, чтобы объяснить, что я имею в виду. – Evgeniy

+0

Можете ли вы включить SSCCE? http://sscce.org/ – axiopisty

+0

Просто введите код класса в поле вопроса? – Evgeniy