как разделить JPanel на 70% 30% [дубликат]
Возможные Дубликаты:
Swing: Как установить высоту компонента на высоту контейнера?
Как разделить JPanel, как показано на рисунке ниже, есть 2 панели panel1 и panel2 panel1 должен занимать 70%, а panel2 30% или panel1 должны быть больше panel2... Я пробовал Gridlayout, макет границы, но он не работает.любая помощь будет оценили.
public class TestApplication extends JApplet {
private static final long serialVersionUID = 1L;
JPanel p1,p2;
public void init(){
setLayout(new GridLayout(3,1));
p1=new JPanel();
p2=new JPanel();
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
add(p1);
add(p2);
}
}
2 ответов
вы рассматривали использование JSplitPane
(как использовать разделенные панели)?
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class TestApplication extends JApplet {
private static final long serialVersionUID = 1L;
JPanel p1,p2;
@Override
public void init(){
setLayout(new BorderLayout());
p1=new JPanel();
p2=new JPanel();
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
sp.setResizeWeight(0.7);
sp.setEnabled(false);
sp.setDividerSize(0);
sp.add(p1);
sp.add(p2);
add(sp, BorderLayout.CENTER);
}
}
Если у вас есть внешний JFrame (или другой JPanel) f, вы можете применить BorderLayout и поставить p1 на севере и p2 на юге. Затем, используя
Dimension df = f.getSize();
вы получите размер внешнего контейнера (f). Далее звоните:
void setSize(Dimension d)
таким образом:
p1.setSize(new Dimension(df.getWidth(), df.getHeight()*0.7));
p2.setSize(new Dimension(df.getWidth(), df.getHeight()*0.3));
наконец, добавьте эти JPanels в свой контейнер.