当前位置: 代码迷 >> J2SE >> 关于BorderLayout布局管理器的奇怪有关问题
  详细解决方案

关于BorderLayout布局管理器的奇怪有关问题

热度:8368   发布时间:2013-02-25 00:00:00.0
关于BorderLayout布局管理器的奇怪问题
情况是这样的,在初始化阶段,为JFrame的WEST和NORTH分别添加了菜单栏和一棵树,然后点击菜单栏中的按钮出发Action的actionPerformed代码。代码如下
Java code
JTextPane note = new JTextPane();Dimension parentSize = ((BorderLayout)menuShowPanel.getLayout()).preferredLayoutSize(menuShowPanel);note.setSize(parentSize);JScrollPane scrollPane = new JScrollPane(note);scrollPane.setSize(parentSize);menuShowPanel.setCurrentNoteCanvas(note);//menuShowPanel就是上面说的JFramemenuShowPanel.add(scrollPane, BorderLayout.CENTER); //添加到CENTER

但是JTextPane没有按照设计出现在JFrame的CENTER位置,而是出现在坐标为(0,0)的位置。大小也没有按照设计设置。很奇怪,调用JFrame的重绘也不行。怀疑是因为添加了新组件,但是布局管理器没有得到通知,Swing之前没用过,请教大家应该怎么做?

------解决方案--------------------------------------------------------
用JFrame 一般要用container contentPane = this.getContentPane();
用contentPane 作为窗格添加各种JPanel);,并不像你说的//menuShowPanel就是上面说的JFrame 就用menuShowPanel.add(***);
scrollPane好像你这个也没用到
既然使用到BorderLayout 这个布局管理器啦 一般用户设置大小是不行的,特别对于JPanel来说,因为它会根据JFrame大小来布局的!
希望对你有所帮助,本人也是菜鸟一枚。



------解决方案--------------------------------------------------------
你对应的JTextPane note = new JTextPane();
有没有设置成:note.setLayout(new BorderLayout());