2015-03-28 3 views
-1

в приведенном ниже коде, я создал GridLayot с 3 строками и 3 столбцами, что я хочу сделать, чтобы добавить jpanel_1 в ячейку specialc Gridlayout, скажем, в ячейке сетки (2,3).Как добавить jpanel в определенную ячейку GridLayout

Код:

private void setUpGUI2() { 
    // TODO Auto-generated method stub 
    jFrame_2 = new JFrame("Border Demo"); 
    GridLayout gridLayOut = new GridLayout(3,3); 
    jFrame_2.setLayout(gridLayOut); 

    jPanel_1 = new JPanel(new BorderLayout()); 
    jPanel_2 = new JPanel(new BorderLayout()); 

    jPanel_1.setBorder(BorderFactory.createTitledBorder("title")); 
    //jPanel_1.setBounds(30, 100, 110, 300); 
    jPanel_1.add(jLabel_Hello, BorderLayout.EAST); 

    jPanel_2.setBorder(BorderFactory.createLoweredBevelBorder()); 
    //jPanel_2.setBounds(20, 50, 120, 80); 
    jPanel_2.add(jLabel_Hello, BorderLayout.SOUTH); 

    //jFrame_2.setBounds(0, 0, 600, 600); 
    jFrame_2.add(jPanel_1);//how to add jpanel_1 to a specific cell of Gridlayout defined above 
    //jPanel_1.add(jPanel_2); 
    jFrame_2.add(jPanel_2); 
    jFrame_2.pack(); 
    jFrame_2.setVisible(true); 
} 
+0

Вызов setBounds бесполезен – MadProgrammer

+0

Для лучшей помощи в ближайшее время отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http: //www.sscce. org /) (Short, Self Contained, Correct Example). Кроме того, более точно укажите, что цель удаления ячеек ячейки. НАПРИМЕР. это игра, в которой содержимое ячейки может измениться в течение всей игры (например, шахматы или нарды)? Это дизайн, который просто нуждается в дополнении? .. –

ответ

1

Я думаю, что нет никаких шансов. Вам нужно добавить их по одному. frame.add(...); frame.add(...);
Я не понимаю, что вы хотите в результате, но используя GridLayout(3, 3) только с 2 панелями - это то же самое, что и использование GridLayout(0, 2).
P.S. Посмотрите GridBagLayout - он может быть более полезен для вас.

+0

Там (шанс), но вам нужно быть творческим? Другая проблема заключается в том, что если операционная система «ожидает» других ячеек «виртуальных», значит, промежуток один и тот же, тогда даже старый добрый GridBagLayout не будет работать – MadProgrammer

+0

@MadProgrammer вы имеете в виду smth как '' add (new Компонент()) ''? – Aero

+1

Да, но я бы использовал JLabel как прозрачный по умолчанию;) – MadProgrammer

0

В зависимости от того, что вы хотите сделать, вы можете добавить «фиктивные» компоненты (например, JLabel) к ячейкам, которые вы не хотите использовать. Если я правильно помню, GridLayout будет макет в порядке цв/строки

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