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();