还不是很了解,做了几个程序;
import java.awt.Container;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;public class pa1
{public static void main(String[] agrs){JFrame frame = new JFrame("JFrame示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);EmptyBorder emptyBorder = new EmptyBorder(20, 20, 20, 20);JScrollPane panel1 = new JScrollPane();panel1.setBackground(Color.ORANGE);panel1.setBorder(emptyBorder);frame.getContentPane().add(panel1);frame.setVisible(true);}
}
此程序运行如下,
单有 panel1.setBackground(Color.ORANGE) 这句,没有panel1.setBorder(emptyBorder),看不到背景色的效果,如果 setBorder,则看到的效果如上图;并且 frame.getContentPane().add(panel1) 这样把panel加到frame,panel默认是充满整个frame的;
看一下panel背景色的设置;
import java.awt.Container;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;public class pa2
{public static void main(String[] agrs){JFrame frame = new JFrame("JFrame示例");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);JScrollPane panel1 = new JScrollPane();panel1.getViewport().setBackground(Color.ORANGE);frame.getContentPane().add(panel1);frame.setVisible(true);}
}
panel1.getViewport().setBackground(Color.ORANGE) 这样就设置了背景色,
我现在想panel不充满整个frame,留一定空间出来;
import javax.swing.*;
import java.awt.*;public class pa3
{public static void main(String[] agrs){JFrame frame = new JFrame("JFrame示例3");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);//frame.setLayout(null);JScrollPane panel1 = new JScrollPane();panel1.getViewport().setBackground(Color.ORANGE);panel1.setPreferredSize(new Dimension(200, 150));//frame.getContentPane().add(panel1);frame.add(panel1);//frame.pack(); // 自动根据组件大小调整JFrame的大小frame.setLocationRelativeTo(null); // 居中显示frame.setVisible(true);}
}
还不知道怎么弄,panel总是会充满整个frame;
frame.getContentPane().add(panel1);
frame.add(panel1);
这2句都会把panel加到frame上;
如果加了 frame.pack() 这句,现在定义的panel比frame小,frame会自己变小和panel一样大;
还不知道怎么弄;
看了一下,是还有一个布局管理器的概念,
如果你想要JPanel占据整个JFrame,你可以使用BorderLayout。默认情况下,JFrame的ContentPane使用BorderLayout作为其布局管理器。如果你想要你的JPanel填充整个JFrame,你可以直接将JPanel添加到JFrame的ContentPane中,并且不需要指定任何布局管理器,因为ContentPane已经使用BorderLayout了。
有时间继续;