SWING分页组件

JTablePageCommon

IPage  使用mybatisplus IPage 自行替换即可

图标可用可不用自删除即可
 

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.formdev.flatlaf.util.SwingUtils;
import org.apache.commons.lang.StringUtils;
import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.ionicons4.Ionicons4Material;
import org.kordamp.ikonli.swing.FontIcon;

import javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

public class JTablePageCommon {
    private CallBack callBack;
    private IPage pages;
    private JToolBar toolBar;

    private String code;

    public JTablePageCommon(IPage pages){
        this.pages=pages;
    }

    public IPage getPages() {
        return pages;
    }

    public void setPages(IPage pages) {
        this.pages = pages;
        JLabel label= SwingUtils.getComponentByName(toolBar,code+"_page");
        label.setText(pages.getCurrent()+"");
        JLabel totalPage= SwingUtils.getComponentByName(toolBar,code+"_totalPage");
        totalPage.setText(pages.getPages()+"");
    }

    /**
     * 刷新
     */
    public void refresh(){
        JLabel label=SwingUtils.getComponentByName(toolBar,code+"_page");
        callBack.call(callBackMap(Integer.parseInt(label.getText()),code,toolBar));
    }

    /**
     * 创建分页
     * @param code
     * @param panel
     * @param callBack
     * @return
     */
    //private Callb
    public  JToolBar createToolBar(String code, JPanel panel, CallBack callBack){
        this.code=code;
        this.callBack=callBack;
        int iconSize=18;
        toolBar=new JToolBar();

       // toolBar.add(Box.createVerticalGlue());

/*
        FlowLayout flowLayout=new FlowLayout();
        flowLayout.setVgap(0);
        flowLayout.setHgap(5);
        flowLayout.setAlignment(FlowLayout.LEFT);
        toolBar.setLayout(flowLayout);
*/


        //JToolBarButton(16, BootstrapIcons.CHEVRON_BAR_LEFT,toolBar,"首页");

        JPanel pagePanel=new JPanel();
        pagePanel.setMaximumSize(new Dimension(500,30));
        pagePanel.add(new JLabel("找到"));
        JLabel total=new JLabel(pages.getTotal()+"");
        total.setName(code+"_total");
        pagePanel.add(total);

        pagePanel.add(new JLabel("条记录,"));
        pagePanel.add(new JLabel("当前第"));
        JLabel page=new JLabel(1+"");
        page.setName(code+"_page");
        pagePanel.add(page);
        pagePanel.add(new JLabel("页,共"));
        JLabel totalPage=new JLabel(pages.getPages()+"");
        totalPage.setName(code+"_totalPage");
        pagePanel.add(totalPage);
        pagePanel.add(new JLabel("页"));
        toolBar.add(pagePanel);
        toolBar.add(Box.createHorizontalGlue());


        JToolBarButton(iconSize, Ionicons4Material.ARROW_BACK,toolBar,"上一页").addActionListener(e->{
            JLabel label= SwingUtils.getComponentByName(toolBar,code+"_page");
            int i=1;
            if (!(Integer.parseInt(label.getText())<2)){
                i=Integer.parseInt(label.getText())-1;
            }
            label.setText(i+"");
            Map<String,Object> map=new HashMap<>();
            map.put("page",i);
            map.put("pageSize",10);
            callBack.call(callBackMap(i,code,toolBar));
        });



        JToolBarButton(iconSize,Ionicons4Material.ARROW_FORWARD,toolBar,"下一页").addActionListener(e->{
            page.setText(Integer.parseInt(page.getText())+1+"");
            callBack.call(callBackMap(Integer.parseInt(page.getText()),code,toolBar));
        });


        toolBar.add(new JLabel("     每页条数:"));
        //每页条数
        JComboBox<Integer> pageSize=new JComboBox<>();
        pageSize.addItem(10);
        pageSize.addItem(20);
        pageSize.addItem(50);
        pageSize.addItem(100);
        pageSize.addItem(500);
        pageSize.addItem(1000);
        pageSize.setName(code+"_pageSize");
        pageSize.addItemListener(e->{
            callBack.call(callBackMap(Integer.parseInt(page.getText()),code,toolBar));
        });
        toolBar.add(pageSize);

        pageSize.setMaximumSize(new Dimension(50,20));

        //total.add(textField);





        page.addPropertyChangeListener("text",e->{
            JTable t=SwingUtils.getComponentByName(panel,code+"_table");
        });

        //JToolBarButton(iconSize,Ionicons4IOS.PLAY,toolBar,"执行");
        toolBar.add(new JLabel("     "));

        JTextField textField=new JTextField();
        textField.setPreferredSize(new Dimension(50,20));
        textField.setMaximumSize(new Dimension(50,20));
        textField.setName(code+"_jumpPage");

        toolBar.add(textField);

        JButton jumpButton=new JButton("跳转");
        jumpButton.addActionListener(e->{
            if (StringUtils.isNotBlank(textField.getText())){
                page.setText(textField.getText());
                JTable t=SwingUtils.getComponentByName(panel,code+"_table");
            }
        });

        toolBar.add(jumpButton);
        return toolBar;
    }

    private Map<String,Object> callBackMap(int page,String code,JToolBar toolBar){
        Map<String,Object> map=new HashMap<>();
        map.put("page",page);
        JComboBox<Integer>  pageSize= SwingUtils.getComponentByName(toolBar,code+"_pageSize");
        map.put("pageSize", Integer.parseInt(pageSize.getSelectedItem().toString()));
        return map;
    }
    private  JButton JToolBarButton(int iconSize, Ikon fonticon, JToolBar toolBar, String tipText){
        FontIcon icon = FontIcon.of(fonticon);
        icon.setIconSize(iconSize);
        //icon.setIconColor(new Color(192,192,192));
        JButton button=new JButton(tipText);
        if(StringUtils.isNotBlank(tipText)){
            button.setToolTipText(tipText);
        }
        toolBar.add(button);
        return button;
    }

}

CallBack 回调类


import java.util.Map;

public interface CallBack {
    public void call(Map<String,Object> map);

}

实战使用

JTablePageCommon jTablePageCommon=new JTablePageCommon(page);

JToolBar bar=jTablePageCommon.createToolBar("table", jPanel, new CallBack() {
            @Override
            public void call(Map<String, Object> map) {
                //回调处理
                int page= (int) map.get("page");
                int size= (int) map.get("pageSize")
            
                //更新总行数
                jTablePageCommon.setPages(page1);
            }
        });

//刷新分页
jTablePageCommon.refresh();

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值