Java~Swing中最常见的中间容器有两种:JPanel和JScrollPane的使用

JPanel

  • JPanel和AWT中的Panel组件使用方法基本一致,它是一个无边框,不能被移动、放大、缩小或者关闭的面板,它的默认布局管理器是FlowLayout。当然也可以使用JPanel带参数的构造函数JPanel(LayoutManager layout)或者它的setLayout()方法为其制定布局管理器。

JScrollPane

  • 与JPanel不同的是,JScrollPane是一个带有滚动条的面板容器,而且这个面板只能添加一个组件,如果想在JScrollPane面板中添加多个组件,应该先将组件添加到JPanel中,然后将JPanel添加到JScrollPane中。
  • JScrollPane的常用构造方法,如表所示.
    在这里插入图片描述

代码演示在JScrollPane中插入表格

package Interface;

import dao.RiverDao;
import deal.SettingColorDeal;
import exception.riverException;
import model.River;

import javax.swing.*;
import java.awt.*;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description: If you don't work hard, you will a loser.
 * User: Listen-Y.
 * Date: 2020-09-05
 * Time: 11:38
 */
public class ShowAllRivers extends JFrame {
    
    
    //使用表格和滚动面板实现河流信息的展示
    private JTable table;
    private JScrollPane pane;

    public ShowAllRivers() {
    
    

        this.setSize(1000, 500);
        this.setTitle("显示所有河流信息");
        this.setLayout(null);
        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //this.setLocationRelativeTo(null); //点击一个关闭所有并退出程序
        if (SettingColorDeal.theme != null) {
    
    
            this.getContentPane().setBackground(SettingColorDeal.theme);
        }
        this.setResizable(false);
        this.setVisible(true);
        //获取所有河流信息
        RiverDao dao = new RiverDao();
        try {
    
    
            //从数据库中获取信息
            List<River> rivers = dao.SelectAll();
            init(rivers);
        } catch (riverException e) {
    
    
            JOptionPane.showMessageDialog(this, "获取信息异常!");
        }
    }

    private void init(List<River> rivers) {
    
    
        //设置表格标题 和表格信息
        String[] titles = new String[] {
    
    "河流编号", "河流名称", "河流长度", "地理位置", "河流类型", "治理情况"};
        String[][] values = new String[rivers.size()][6];
        for (int i = 0; i < rivers.size(); i++) {
    
    
            River river = rivers.get(i);
            values[i][0] = String.valueOf(river.getRiver_num());
            values[i][1] = river.getRiver_name();
            values[i][2] = river.getRiver_length() + " (Km)";
            values[i][3] = river.getRiver_location();
            values[i][4] = river.getRiver_class();
            values[i][5] = river.getRiver_status();
        }
        //初始化表格和滚动面板
        table = new JTable(values, titles);
        table.getTableHeader().setFont(new Font("标楷体",Font.BOLD,16));
        table.setFont(new Font("",0,16));
        pane = new JScrollPane(table);
        pane.setSize(900, 400);
        pane.setLocation(50, 50);
        //总是出现垂直滚动条
        pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        this.add(pane);


    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Shangxingya/article/details/108457803