仿网页分页页码

来源:互联网 发布:知乎 如何评价李叫兽 编辑:程序博客网 时间:2024/05/17 08:56

  本文manymore13原创,转载请标明出处  http://blog.csdn.net/manymore13/article/details/8472586 

   

     2012 苹果发布了ipad mini和iphone 5 ,微软发布win 8,wp8,谷歌推出果冻豆,并推出Nexus 7,十八大的召开,还有因玛

人预言是世界末日论等等在2012发生的大事.... 所以2012注定不是一个平静之年。我在去年闲暇时间看了不少各种仿某某的技术文

章,如仿微信登陆界面 欢迎界面qq界面以及仿网易新闻上面的什么什么..... 总之有各种仿。

     仿照未必是一件坏事,先要学会仿照,接着理解他,吃透他,等你懂了一定原理后,发现以前的东西不怎么够好,需要改进,那

过你的改进,使你的软件用户体验更好,我想这应该就是微创新吧。

在这里引用下名人的话以增加文章的深度啊 大笑

       “  用户体验创新是决定互联网应用能否受欢迎的关键因素,这种创新叫'微创新','微创新'引领互联网新的趋势和浪潮  ”。——周鸿祎

好了引用完名人的话总算啰嗦一把,下面继续啰嗦哈,直接切入正题

为了跟进潮流,我也来 仿某某,,以后再学习微创新。今天我仿得是网站最喜欢用的文章分页时的页码,看看效果图与代码你就知

道了。




package com.manymore13.page;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.security.acl.LastOwnerException;import javax.imageio.ImageIO;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class PageNumDemo extends JFrame{private int sumPage = 35;//总的页码数,这里作为Demo,就写个固定值private int currentPage=1;      // 默认是第一页private JPanel pageBtns = new JPanel(); // 存放一系列页码按钮 默认流布局PageNumDemo(){Image image = null;try{image = ImageIO.read((this.getClass().getResource("./image/logo.png")));} catch (IOException e){e.printStackTrace();}this.setIconImage((Image)image);// 设置窗口左上角的图标,我这里是个快播的图标this.setTitle("仿网页分页页码"); //设置窗口标题this.setLayout(new FlowLayout(15,20,20)); //设置JFrame的布局this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 档点击叉叉时,窗口可关闭this.setVisible(true); // 窗口可见this.setLocationRelativeTo(null); //窗口居中setPageBottom(1); //默认显示第一页 ,设置页码布局this.setSize(850, 118); // 窗口宽高this.setResizable(true);// 设置窗口可拉伸}/** *  * @param selectNum 你按下的页码数字,例如你按下按钮5,就需要传个整型5 */private void setPageBottom(int selectNum){pageBtns.removeAll();if(selectNum<=0 || selectNum>sumPage){return;}// 这个是显示数字按钮的总个数,不包括首页 尾页等其他按钮int countNumBtn = 9; // 首页 1 2 3 4 5 6 7 8 9 尾页int half = countNumBtn/2;int startNum = 0;int endNum = 0;JButton btnFistPage = new JButton("首页");btnFistPage.setActionCommand("首页");btnFistPage.setToolTipText("首页");btnFistPage.setToolTipText("首页");btnFistPage.addActionListener(new BottomPageButtonAction());JButton btnLastPage = new JButton("末页");btnLastPage.setActionCommand("末页");btnLastPage.addActionListener(new BottomPageButtonAction());btnLastPage.setToolTipText("共"+sumPage+"页");Container con = this.getContentPane();con.invalidate();pageBtns.add(btnFistPage);if(selectNum !=1){JButton btnPrePage = new JButton("上一页");btnPrePage.setActionCommand("上一页");btnPrePage.setToolTipText("上一页是第"+(selectNum-1>=1?selectNum-1:1)+"页");btnPrePage.addActionListener(new BottomPageButtonAction());pageBtns.add(btnPrePage);}// 下面开始计算从左至右数字键(JButton)上的textint minBtnNum = selectNum-half;int maxBtnNum = selectNum+half;if(minBtnNum>0 && maxBtnNum<=sumPage){startNum = minBtnNum;endNum = maxBtnNum;}else if(minBtnNum<=0){startNum =1;endNum = countNumBtn>sumPage?sumPage:countNumBtn;}else if(maxBtnNum>sumPage){startNum = sumPage >countNumBtn?sumPage-(countNumBtn-1):1;endNum = sumPage;}for(int i=startNum;i<=endNum;i++){JButton btn = new JButton();btn.addActionListener(new BottomPageButtonAction(i));btn.setActionCommand("数字");btn.setToolTipText("第"+i+"页");btn.setText(i+"");if(i==selectNum){btn.setBackground(Color.red);}else{btn.setBackground(Color.white);}pageBtns.add(btn);}if(selectNum != sumPage){JButton btnNextPage = new JButton("下一页");btnNextPage.setActionCommand("下一页");btnNextPage.setToolTipText("下一页是第"+(selectNum+1<=sumPage?selectNum+1:sumPage)+"页");btnNextPage.addActionListener(new BottomPageButtonAction());pageBtns.add(btnNextPage);}pageBtns.add(btnLastPage);con.validate();this.add(pageBtns);}// 页码事件处理class BottomPageButtonAction implements ActionListener{int btnNumText =0;BottomPageButtonAction(){}BottomPageButtonAction(int num){btnNumText = num;}@Overridepublic void actionPerformed(ActionEvent e){String command = e.getActionCommand();System.out.println(command);if(command.equals("首页")){ // setPageBottom(1); // 首页就是第一页,所以直接传个1currentPage =1;}else if(command.equals("上一页")){setPageBottom(currentPage-1>=1?--currentPage:1);}else if(command.equals("下一页")){setPageBottom(currentPage+1<=sumPage?++currentPage:sumPage);}else if(command.equals("末页")){setPageBottom(sumPage); // 末页是最后的页数currentPage = sumPage;}else if(command.equals("数字")){setPageBottom(btnNumText);currentPage = btnNumText;}System.out.println("当前是第 "+currentPage+"页");}}/** * @param args */public static void main(String[] args){new PageNumDemo();}}


小功能简单实现了下,代码里注释很清楚了,JFrame里添加一个Jpanel,Jpanel里添加相应的JButton,由于Jpanel是流布局,所以Button在被添加时一定要按顺序添加。

源码在这里

原创粉丝点击