JFrame和JScrollPanel布局初步使用

还不是很了解,做了几个程序;

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了。 

有时间继续;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值