面板也是一个Swing容器,它可以作为容器容纳其它组件,但他必须被添加到其它容器中,Swing中的常用面板有JPanel面板和JScrollPane面板。

JPanel面板

JPanel面板可以拥有自己的布局(如网格布局、流布局……),可以添加自己的组件,更改自己的属性……可以认为是一个放在JF窗体里面的JF窗体。
image.png

  1. package MyPackage_2;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class TestClass extends JFrame{
  5. public TestClass(String str){
  6. super(str);
  7. super.setVisible(true);
  8. super.setBounds(100,100,800,600);
  9. super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  10. }
  11. public static void main(String[] args) {
  12. TestClass d1=new TestClass("JF窗体");
  13. Container c1=d1.getContentPane();
  14. c1.setLayout(new GridLayout(2,2,10,10));//把c1设置为网格布局(2*2),网格之间的间隔是10
  15. JPanel p1=new JPanel(new GridLayout(1,3,10,10));//把面板p1设置为网格布局
  16. p1.add(new JButton("按钮1"));
  17. p1.add(new JButton("按钮2"));
  18. p1.add(new JButton("按钮3"));
  19. JPanel p2=new JPanel();//设置为默认布局,p3、p4一样
  20. JPanel p3=new JPanel();
  21. JPanel p4=new JPanel();
  22. p1.setBorder(BorderFactory.createTitledBorder("面板1"));//为p1设置边框
  23. p2.setBorder(BorderFactory.createTitledBorder("面板2"));
  24. p3.setBorder(BorderFactory.createTitledBorder("面板3"));
  25. p4.setBorder(BorderFactory.createTitledBorder("面板4"));
  26. c1.add(p1);
  27. c1.add(p2);
  28. c1.add(p3);
  29. c1.add(p4);
  30. }
  31. }

运行结果:
image.png

JScrollPane面板(滚动面板)

JScrollPane面板是一种带滚动条的面板,可以把文本域放进JScrollPane面板,这样当文本域超过可视范围时就可以通过拉动滚动条查看超过的内容。滚动面板只能放置一个组件,并且不可以使用布局管理器。如果需要在滚动面板上放置多个组件,需要讲多个组件放置在JPanel面板上,然后把JPanel面板作为一个整体组件添加在滚动面板上。

  1. package MyPackage_2;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class TestClass extends JFrame{
  5. public TestClass(String str){
  6. super(str);
  7. super.setBounds(100,100,800,600);
  8. super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  9. Container c1=super.getContentPane();
  10. JTextArea area=new JTextArea();
  11. c1.add(area);
  12. super.setVisible(true);//注意此时该方法一定要放到最后,不然文本域无法显示
  13. }
  14. public static void main(String[] args) {
  15. TestClass d1=new TestClass("JF窗体");
  16. }
  17. }

运行结果:
image.png
上述代码时不带滚动条的,如果文本超过了可视范围,需要扩大可视范围才能看见文本,很不方便,下面看一下把文本域添加到滚动面板里面:

  1. package MyPackage_2;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. public class TestClass extends JFrame{
  5. public TestClass(String str){
  6. super(str);
  7. super.setBounds(100,100,800,600);
  8. super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  9. Container c1=super.getContentPane();
  10. JTextArea area=new JTextArea();//实例化一个文本域对象,名称是area
  11. JScrollPane js=new JScrollPane(area);//实例化一个滚动面板,名称是js;并把文本域添加到滚动面板js(参数就是要添加滚动条的文本域)
  12. c1.add(js);//把滚动面板js添加到c1
  13. super.setVisible(true);//注意此时该方法一定要放到最后,不然文本域无法显示
  14. }
  15. public static void main(String[] args) {
  16. TestClass d1=new TestClass("JF窗体");
  17. }
  18. }

运行结果:
image.png