还不是很了解,做了几个程序;
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了。
有时间继续;