你的this.getContentPane().add(ctrlPanel,BorderLayout.EAST);
好像应该是BordrLayout.SOUTH而不是BorderLayout.EAST
这样才可能“无条件向左右延伸至窗口边缘”

解决方案 »

  1.   

    书上说:BordrLayout布局时,先配置上方和下方,后配置左方和右方,最后配置中间。
    我改为BordrLayout.SOUTH后也没什么变化
      

  2.   

    随意放时,默认是采用BorderLayout布局类
      

  3.   

    我试了你的程序,我去掉了mainPanel
    直接使用xyTipPanel可以达到你预期效果
    this.getContentPane().add(xyTipPanel,BorderLayout.CENTER);问题在于你多用了一个mainPanel并且用mainPanel.add(xyTipPanel)
    即mainPanel位于center,而不是xyTipPanel位于center
      

  4.   

    那不可以在mainPanel上添加组件了,我还要在mainPanel里添加别的JPanel怎么办呢?
      

  5.   

    我想要的效果:
    http://bbs.nju.edu.cn/file/exam.bmp
      

  6.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class TempFrame extends JFrame{
    public TempFrame(){
    JMenuBar menuBar;
    JMenu menu;

    menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    menu = new JMenu("File");
    menuBar.add(menu);
    menu = new JMenu("Help");
    menuBar.add(menu);

    JTabbedPane tabbedPane = new JTabbedPane();        Component panel1 = makeTextPanel("JTabbedPane");
            tabbedPane.addTab("Tap1", panel1);
            tabbedPane.setSelectedIndex(0);        Component panel2 = makeTextPanel("JTabbedPane");
            tabbedPane.addTab("Tap2", panel2);        Component panel3 = makeTextPanel("JTabbedPane");
            tabbedPane.addTab("Tap3", panel3);        JPanel centerPanel=new JPanel();//Add the tabbed pane to this panel.
            centerPanel.setLayout(new GridLayout(1, 1)); 
            centerPanel.add(tabbedPane);
            
            JPanel eastPanel=new JPanel();
            eastPanel.setLayout(new GridLayout(3, 1));
            eastPanel.add(new JToggleButton("JToggleButton"));
            eastPanel.add(new JSlider());
            eastPanel.add(new JSlider());
            
            getContentPane().add(centerPanel,BorderLayout.CENTER);
            getContentPane().add(eastPanel,BorderLayout.EAST);
            getContentPane().add(new JProgressBar(),BorderLayout.SOUTH);
        }    protected Component makeTextPanel(String text) {
            JPanel panel = new JPanel(false);
            JLabel filler = new JLabel(text);
            filler.setHorizontalAlignment(JLabel.CENTER);
            panel.setLayout(new GridLayout(1, 1));
            panel.add(filler);
            return panel;
        }

    public static void main(String[] args) {
            TempFrame window = new TempFrame();
    window.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {System.exit(0);}
            });
            
            window.setTitle("Title");
            window.setSize(450, 260);
            window.setVisible(true);
        }
    }
      

  7.   

    我自己也改了一下:不过还是谢谢了,另外有个新问题http://expert.csdn.net/Expert/TopicView1.asp?id=1757275