为什么我的文件菜单的下拉项总是被按钮盖住!如何解决这问题么呢!谢谢高手指点!程序在下面:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; class MyFrame extends JFrame{
Button bt = new Button("问题在这");
//菜单条
JMenuBar jmb = new JMenuBar();
//主菜单
JMenu jm1 = new JMenu("文件");
JMenu jm2 = new JMenu("编辑");
JMenu jm3 = new JMenu("窗口");
//菜单
JMenuItem jmi1 = new JMenuItem("oper");
JMenuItem jmi2 = new JMenuItem("close");
JMenuItem jmi3 = new JMenuItem("add");
JMenuItem jmi4 = new JMenuItem("remove");
JMenuItem jmi5 = new JMenuItem("?");
public MyFrame(){
jm1.add(jmi1);
jm1.add(jmi2);
jm2.add(jmi3);
jm2.add(jmi4);
jm3.add(jmi5);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
this.setJMenuBar(jmb);
this.getContentPane().add(bt,BorderLayout.WEST);
this.setSize(200,300);
this.setVisible(true);
}
public static void main(String []args){
new MyFrame();
}
}
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; class MyFrame extends JFrame{
Button bt = new Button("问题在这");
//菜单条
JMenuBar jmb = new JMenuBar();
//主菜单
JMenu jm1 = new JMenu("文件");
JMenu jm2 = new JMenu("编辑");
JMenu jm3 = new JMenu("窗口");
//菜单
JMenuItem jmi1 = new JMenuItem("oper");
JMenuItem jmi2 = new JMenuItem("close");
JMenuItem jmi3 = new JMenuItem("add");
JMenuItem jmi4 = new JMenuItem("remove");
JMenuItem jmi5 = new JMenuItem("?");
public MyFrame(){
jm1.add(jmi1);
jm1.add(jmi2);
jm2.add(jmi3);
jm2.add(jmi4);
jm3.add(jmi5);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
this.setJMenuBar(jmb);
this.getContentPane().add(bt,BorderLayout.WEST);
this.setSize(200,300);
this.setVisible(true);
}
public static void main(String []args){
new MyFrame();
}
}
就不会出现你的这个问题这是pack方法
public void pack() {
Container parent = this.parent;
if (parent != null && parent.getPeer() == null) {
parent.addNotify();
}
if (peer == null) {
addNotify();
}
setSize(getPreferredSize()); if(isFirstPack == true) {
isPacked = true;
isFirstPack = false;
} validate();
}这是setSize()的代码:
public void setSize(int width, int height) {
resize(width, height);
}问题出在哪里我也不知道
那你最好还是用pack()
不要用setSize()了
this.add(bt, BorderLayout.WEST);