BorderLayout也是一种 东、西、南、北、中的布局策略,每加入一个组件都应该指明把这个组件加在哪个区域中。窗口变化时,东、西宽不变,南、北高不变。如下所示:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class BorderWindow extends JFrame {
public BorderWindow() {
Container contentPane = getContentPane();//获得容器,容器默认布局为BorderLayout
contentPane.add(new JButton("Button 1 (NORTH)"),BorderLayout.NORTH);
contentPane.add(new JButton("2 (CENTER)"),BorderLayout.CENTER);
contentPane.add(new JButton("Button 3 (WEST)"),BorderLayout.WEST);
contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"),BorderLayout.SOUTH);
contentPane.add(new JButton("Button 5 (EAST)"),BorderLayout.EAST); addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
} public static void main(String args[]) {
BorderWindow window = new BorderWindow();
window.inAnApplet = false;
window.setTitle("BorderLayout");
window.pack();
window.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class BorderWindow extends JFrame {
public BorderWindow() {
Container contentPane = getContentPane();//获得容器,容器默认布局为BorderLayout
contentPane.add(new JButton("Button 1 (NORTH)"),BorderLayout.NORTH);
contentPane.add(new JButton("2 (CENTER)"),BorderLayout.CENTER);
contentPane.add(new JButton("Button 3 (WEST)"),BorderLayout.WEST);
contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"),BorderLayout.SOUTH);
contentPane.add(new JButton("Button 5 (EAST)"),BorderLayout.EAST); addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
} public static void main(String args[]) {
BorderWindow window = new BorderWindow();
window.inAnApplet = false;
window.setTitle("BorderLayout");
window.pack();
window.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class GridBagWindow extends JFrame {
boolean inAnApplet = true;
final boolean shouldFill = true;
final boolean shouldWeightX = true;public GridBagWindow() {
JButton button;
Container contentPane = getContentPane();
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
contentPane.setLayout(gridbag);
if (shouldFill) {
//natural height, maximum width
c.fill = GridBagConstraints.HORIZONTAL;
}button = new JButton("Button 1");
if (shouldWeightX) {
c.weightx = 0.5;
}
c.gridx = 0;
c.gridy = 0;
gridbag.setConstraints(button, c);
contentPane.add(button);button = new JButton("2");
c.gridx = 1;
c.gridy = 0;
gridbag.setConstraints(button, c);
contentPane.add(button);button = new JButton("Button 3");
c.gridx = 2;
c.gridy = 0;
gridbag.setConstraints(button, c);
contentPane.add(button);button = new JButton("Long-Named Button 4");
c.ipady = 40; //make this component tall
c.weightx = 0.0;
c.gridwidth = 3;
c.gridx = 0;
c.gridy = 1;
gridbag.setConstraints(button, c);
contentPane.add(button);button = new JButton("Button 5");
c.ipady = 0; //reset to default
c.weighty = 1.0; //request any extra vertical space
c.anchor = GridBagConstraints.SOUTH; //bottom of space
c.insets = new Insets(10,0,0,0); //top padding
c.gridx = 1; //aligned with button 2
c.gridwidth = 2; //2 columns wide
c.gridy = 2; //third row
gridbag.setConstraints(button, c);
contentPane.add(button);addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (inAnApplet) {
dispose();
} else {
System.exit(0);
}
}
});
}public static void main(String args[]) {
GridBagWindow window = new GridBagWindow();
window.inAnApplet = false;window.setTitle("GridBagLayout");
window.pack();
window.setVisible(true);
}
}
楼主能看看你的程序么?
所以要在(0,0)上画出来,你的组件的位置一定要放好~~如果嫌 BorderLayout 的布局不能由自己控制,可以不设任何布局(Container.setLayout(null)),直接调用组件的方法来定位(Component.setBounds(x, y, width, height)).
我是没有别的意思的,我觉得你应该在回答问题时应该看清我要问的。
如果你真觉得伤自尊了,我这里诚恳的向你表示歉意
你只说对了一半:
其实如果你在APPLET上设置布局后,加PANEL就会盖住那部分