2015-01-01 7 views
0

Я пытаюсь разработать JPanel из JPanel, в Java внешний JPanel имеет Layout FlowLayout.LEFT и внутренние JPanels имеют Компоновка FlowLayout.LEADING я добавил этикетки к внутренним JPanel, следует добавить на внешнюю панель в виде столбцов и строк таблиц , но это не работает над ярлыками, добавленными на внешнюю панель, как одна строка, я имею в виду левый FowLayout для всехJPanel из JPanel, в Java

Я сохранил метки в связанном списке связанных списков ярлыков, называемых плата вот код для заполнения списка с этикеткой

for(int i =0 ; i <7 ;i++) 
    { 
     LinkedList<JLabel> list =new LinkedList<JLabel>(); 


     for(int j=0 ; j< 5; j++) 
     { 
      JLabel lab = new JLabel(); 
      lab.setIcon(add_icon); 
      lab.addMouseListener(listener); 
      lab.setTransferHandler(new TransferHandler("icon"));  
      list.add(lab); 
     } 
     board.add(list); 

    } 

затем я добавил ярлыки на внешнее JPanel называемых контейнерами

Вот код

container.setLayout(new FlowLayout(FlowLayout.LEFT)); 

    for(int i =0 ; i < board.size() ;i++) 
    { 
     panel =new JPanel(); 
     panel.setLayout(new FlowLayout(FlowLayout.LEADING)); 
     for(int j=0 ; j< board.get(i).size(); j++) 
     { 
      panel.add(board.get(i).get(j)); 

     } 

     container.add(panel); 


     //   
    } 
    add(container); 

    validate(); 
    repaint(); 

здесь выход, кажется, что поток макет ведущий не работает

Как может я делаю это ? Что я должен сделать, чтобы добавить метки в виде строк и столбцов?

+0

Так Что ваш вопрос? Что «добавляет ярлыки во внутренние jpanels, которые следует добавить на внешнюю панель в виде столбцов и строк таблиц, но это не работает над ярлыками, добавленными на внешнюю панель, как одна строка, я имею в виду левую FowLayout для всех * имею в виду? Может кто-то расшифровать это для меня? –

+0

Ваш вопрос ** очень ** смущает. Я предполагаю, что английский не является вашим основным языком, и, возможно, вы использовали сайт перевода, такой как Google translate, чтобы помочь вам сформулировать свой вопрос. Попробуйте лучше разъяснить свою проблему, чтобы мы могли лучше понять ее. –

+0

Вы рассматривали использование 'GridLayout' или' GridBagLayout' вместо этого? – MadProgrammer

ответ

0

я нашел это может быть сделано usuing GridBagLayout

container.setLayout(new GridBagLayout()); 
    GridBagConstraints c = new GridBagConstraints(); 
    c.fill=GridBagConstraints.HORIZONTAL; 
    for(int i =0 ; i < board.size() ;i++) 
    { 
     panel =new JPanel(); 
     panel.setLayout(new GridBagLayout()); 
     GridBagConstraints c1 = new GridBagConstraints(); 
     c1.fill=GridBagConstraints.VERTICAL; 
     c1.weighty=-.9; 

     //   panel.setBounds(0, 0, 400, 300); 
     for(int j=0 ; j< board.get(i).size(); j++) 
     {    
      c1.gridx = j; 
      c1.gridy = 0; 
      c1.insets= new Insets(-5,0,0,-5); 
      panel.add(board.get(i).get(j),c1); 

     } 
     c.weightx =- 5; 
     c.gridx = 0; 
     c.gridy =i ; 
     c.insets=new Insets(-5,0,-5,0); 


     container.add(panel,c); 


     //   
    } 
    add(container); 

    validate(); 
    repaint(); 
0

FlowLayout не может складывать компоненты по вертикали. Вместо этого используйте BoxLayout. Попробуйте следующий код:

container.setLayout(new FlowLayout(FlowLayout.LEFT)); 
for(int i = 0; i < board.size(); i++){ 
    panel = new JPanel(); 
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
    for(int j = 0; j < board.get(i).size(); j++) 
     panel.add(board.get(i).get(j)); 
    container.add(panel); 
} 
add(container); 
validate(); 
repaint(); 
+0

Большое спасибо его действительно полезный ответ –

Смежные вопросы