用的是borderlayout布局管理器嵌套GridLayout布局管理器
然后在网络布局管理器里的一个嵌入了一个Box 实例box
box里加入了两个按纽,这两个button不能完全填充,是什么原因呢?import java.awt.*;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.DateFormat;
import java.util.Date;import javax.swing.JLabel;public class NotePad extends Frame{
PopupMenu pop;
JLabel jLlength;
public NotePad() {
super("By unique");

// set MenuBar
MenuBar menu = new MenuBar();
this.setMenuBar(menu);

// set file
Menu file = new Menu("File");
Menu edit = new Menu("Edit");
Menu format = new Menu("Format");
Menu exam = new Menu("Exam");
Menu help = new Menu("Help");

// set fileItem

Menu sendTo = new Menu("Send to");// subFile

file.add(new MenuItem("New"));
file.add(new MenuItem("Open"));
file.add(new MenuItem("Save"));
file.add(new MenuItem("Save as"));
file.add(new MenuItem("Page layout"));
file.add(new MenuItem("Print"));
file.add(new MenuItem("Exit"));

edit.add("Undo typing");
edit.add("Cut");
edit.add("Copy");
edit.add("Paste");
edit.add("Delete");
edit.add("Find");
edit.add("Find next");
edit.add("replace");
edit.add("goto");
edit.add("All select");
edit.add("Time/Date");

format.add("Line wrap");
format.add("Font");

exam.add("Status bar");

help.add("Assist subject");
help.add(new MenuItem("About notepad"));


menu.add(file);
menu.add(edit);
menu.add(format);
menu.add(exam);
menu.add(help);

final TextArea p = new TextArea(DateFormat.getInstance().format(new Date())
+ "\n");
p.addTextListener(new TextListener() { public void textValueChanged(TextEvent e) {
// TODO Auto-generated method stub
jLlength.setText("length: " + p.getText().length());
}

});

jLlength = new JLabel("0");
jLlength.setText(String.valueOf(p.getText().length()));

this.add(p, BorderLayout.CENTER);
this.add(jLlength, BorderLayout.SOUTH); pop = new PopupMenu();
pop.add("Undo typing");
pop.add("Copy");
pop.add("Cut");
pop.add("Paste");
pop.add("Delete");
pop.add("All select");
p.add(pop);
p.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger()) {
System.out.println("popup trigger");
System.out.println(e.getComponent());
pop.show(e.getComponent(), e.getX(), e.getY());
}
}
});
GraphicsEnvironment g = null;
Point pCen = g.getLocalGraphicsEnvironment().getCenterPoint();
this.pack();
this.setLocation((int)(pCen.getX() - this.getWidth()/2) ,(int)(pCen.getY() - this.getHeight()/2));
this.setVisible(true);

this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
new NotePad();
}}

解决方案 »

  1.   

    Box这个类中应该有设置填充的方法,你查查JDK API文档
    有时最外部窗体过小也会导致内部布局出乎你的意料,可以试着换换最外层Frame的大小看看
      

  2.   

    没有用,试过,调整外层的Frame根本不能改变里面嵌套的box的大小
    在api里没有查到填充相关的方法。