问题描述
import java.awt.*;import javax.swing.*;public class MainFrame extends JFrame {public static void main(String[] args) {new MainFrame().launchFrame();}//显示主窗体public void launchFrame() {setSize(800,600);setLocation(300,400);//该面板用于显示顶部图片JPanel p1 = new JPanel();p1.setSize(800, 60);//增加tab标签切换面板JTabbedPane tab = new JTabbedPane();//增加四个tab面板JPanel tp1 = new JPanel();JPanel tp2 = new JPanel();JPanel tp3 = new JPanel();JPanel tp4 = new JPanel();tp1.add(new JLabel("1"));tp2.add(new JLabel("2"));tp3.add(new JLabel("3"));tp4.add(new JLabel("4"));tab.add("主窗口",tp1);tab.add("歌曲列表",tp2);tab.add("下载列表",tp3);tab.add("我的音乐",tp4);tab.setSize(800,540);add(p1,BorderLayout.NORTH);add(tab,BorderLayout.SOUTH);setResizable(false);setVisible(true);}显示结果如图所示,因为设置了tab的大小是(800,540),而p1的大小是(800,60),窗口大小是(800,600),理论上应该是下面大,上面小才对,可是》。。。
解决方案
你加上一句p1.setBorder(new LineBorder(Color.blue));就看得很清楚了。
解决方案二:
add(tab,BorderLayout.CENTER);把tab放到CENTER的位置就行了。BorderLayout布局管理器本来就对设置大小无效的。如果想设置组件大小,建议使用其它的Layout(如我常用的:GridBagLayout)