7
回答
Java Swing 布局问题
终于搞明白,存储TCO原来是这样算的>>>   

  菜鸟一枚  搞iOS的 被老大赶鸭子上架 用java写个小程序  

    已实现菜单栏 ,在菜单栏中选择excel表后显示出来  但现在我选择了excel后直接弹出一个新的窗口显示,并不是在菜单栏下面显示 求大神帮帮忙 

public static class test2 extends JFrame{ 
private static final long serialVersionUID = 1L;   
static final int WIDTH = 600;   
static final int HEIGHT = 300;   
public test2() { super("ceshui");  
final JRootPane rp = new JRootPane();  
super.setContentPane(rp);  
JMenuBar menubar1 = new JMenuBar();  
rp.setJMenuBar(menubar1);  
JMenu menu1 = new JMenu("文件");  
JMenu menu2 = new JMenu("设置");  JMenu menu3 = new JMenu("运行");  
JMenu menu4 = new JMenu("关于");  
 menubar1.add(menu1);  menubar1.add(menu2);  menubar1.add(menu3)
 menubar1.add(menu4);  
 JMenuItem item1 = new JMenuItem("打开");  JMenuItem item2 = new JMenuItem("保存");
  JMenuItem item3 = new JMenuItem("另存");  JMenuItem item4 = new JMenuItem("退出");
   // 二级菜单  
JMenu menu5 = new JMenu("串口");   JMenuItem item6 = new JMenuItem("配置");  
JMenuItem item7 = new JMenuItem("执行用例");  JMenuItem item8 = new JMenuItem("暂停");
  JMenuItem item9 = new JMenuItem("停止");  JMenuItem item10 = new JMenuItem("导出结果");
  JMenuItem item11 = new JMenuItem("串口1");  JMenuItem item12 = new JMenuItem("串口2");
  JMenuItem item13 = new JMenuItem("串口3");   
menu1.add(item1);  menu1.add(item2);  menu1.add(item3);  menu1.add(item4);  
menu2.add(menu5);  menu2.add(item6);  menu3.add(item7);  menu3.add(item8);
  menu3.add(item9);  menu3.add(item10);   
//二级菜单添加子选项  menu5.add(item11);  menu5.add(item12);  menu5.add(item13)
  this.setVisible(true);  this.pack();   
item1.addActionListener(new ActionListener() {
@Override  public void actionPerformed(ActionEvent e) { 
fileChooser = new FileChooser();   
fileChooser.setListener(new Listerner() {
@Override  public void methord1(String path) {  System.out.println("a =" +path);  
// 创建table表格显示出来
myTable = new MyTable(path);  
JTable table = new JTable(myTable);  
JFrame f = new JFrame()
//                            this.add(table, BorderLayout.CENTER); 
 f.add(table,BorderLayout.CENTER);  f.setVisible(true);   }
                    });   }
            });  }
    }
 完全没接触过 程序很乱  

举报
BaBu
发帖于1年前 7回/364阅
共有7个答案 最后回答: 1年前

因为你在文件选择器的方法中新 new 了一个 Frame,然后把这个新的 Frame 设为了可见。

JTable table = new JTable(myTable);  
JFrame f = new JFrame(); 
f.add(table,BorderLayout.CENTER);


可以把 JRootPane rp 改成成员变量,然后把 table 加到 rp 中去,注意防止重复添加。


--- 共有 4 条评论 ---
BaBu回复 @烟雨三月 : 嗯 谢谢 已经可以了 1年前 回复
烟雨三月回复 @BaBu : JRootPane.getContentPane() 1年前 回复
BaBu还是不行啊 我看了下教程,说JRootPanel面板中除了菜单条外,还有一个内容面板是添加组件的。JMenuBar是位于LayeredPanel上边缘,JContentPanel则填充了整个可查看区域。 可我根本找不到JContentPanel这个类 1年前 回复
BaBu谢谢 上班了去试下 1年前 回复

弄个NetBeans来,拖控件,这样界面的东西一个个写累死啊。

不建议这么牛拌直接写Swing布局代码。

--- 共有 1 条评论 ---
BaBu我这个界面应该算是简单吧 菜单栏 然后下面空白区域显示table 不过这个布局确实挺蒙的 习惯iOS的布局了 1年前 回复
如果不需要打开多个文件的话,JTable可以在启动时添加到面板上;平常设置为隐藏,打开文件时设置为显示。
--- 共有 1 条评论 ---
BaBu 能否给出具体点的代码呢 对java不熟悉 自己找都不知道去哪找 1年前 回复
呵呵,能理解你的难处。  到这个网站学习下 http://www.yiibai.com/swing/swing_jframe.html ,看能否帮到你 。

引用来自“烟雨三月”的评论

因为你在文件选择器的方法中新 new 了一个 Frame,然后把这个新的 Frame 设为了可见。

JTable table = new JTable(myTable);  
JFrame f = new JFrame(); 
f.add(table,BorderLayout.CENTER);


可以把 JRootPane rp 改成成员变量,然后把 table 加到 rp 中去,注意防止重复添加。


已经实现了
顶部