Как я делю JPanel в 70% 30%
Возможный дубликат:
Swing: Как установить высоту компонента на высоту контейнера?
как я делю JPanel, как показано на рисунке ниже, есть 2 панели panel1 и panel2
panel1 должен принимать 70%, а panel2 30% или panel1 должен быть больше, чем panel2...
Я попробовал Gridlayout, Border Layout, но его не работает. Любая помощь будет оценена.
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);
}
}
![enter image description here]()
Ответы
Ответ 1
Считаете ли вы использование 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);
}
}
![enter image description here]()
Ответ 2
Если у вас есть внешний JFrame (или другой JPanel) f, вы можете применить BorderLayout и поставить p1 в NORTH и p2 в SOUTH. Затем, используя
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 в свой контейнер.