private void addActionListener() { btnFirstPage.addActionListener( this ); btnPreviousPage.addActionListener( this ); btnNextPage.addActionListener( this ); btnLastPage.addActionListener( this );
public int getClickedButton() { return clickedButton; } public static void main( String[] args ) { JFrame f = new JFrame(); PagePanelModel model = new PagePanelModel(); PagePanel pp = new PagePanel( model ); model.setTotalPage( 5 ); model.setCurrPage( 1 ); JPanel p = new JPanel(); p.add( pp ); f.getContentPane().add( p );
f.setSize( 320 , 240 ); f.setVisible( true );
}
private int clickedButton;
public static final int FIRST = 1; public static final int PREVIOUS = 2; public static final int NEXT = 3; public static final int LAST = 4;
/* 子类的例子,覆盖了protected函数 private class SouthPagePanel extends PagePanel { public SouthPagePanel( PagePanelModel m ) { super( m ); } protected void btnClicked() { controller.pagePanelBtnClick(); } }*/ }
package util.gui;import javax.swing.JOptionPane;public class PagePanelModel { private PagePanel view; void setView( PagePanel v ) { view = v; } // currPage private int currPage = 1; public void setCurrPage( int str ) { if( str<0 ) { currPage = 0; JOptionPane.showMessageDialog( view , "当前页数不能为负数:" + str ); } else { currPage = str; } fireDataChanged(); } public int getCurrPage() { return currPage; } // totalPage private int totalPage = 0; public void setTotalPage( int str ) { if( str<0 ) { totalPage = 0; JOptionPane.showMessageDialog( view , "总页数不能为负数::" + str ); } else { totalPage = str; } fireDataChanged(); } public int getTotalPage() { return totalPage; }
import java.awt.event.*;public class PagePanel extends JPanel implements ActionListener
{
// JButton
private JButton btnFirstPage = new JButton( "首页" );
private JButton btnPreviousPage = new JButton( "上页" );
private JButton btnNextPage = new JButton( "下页" );
private JButton btnLastPage = new JButton( "末页" );
// JLabel
private JLabel lblPage = new JLabel( "0/0" );
// Model
PagePanelModel model;
public void setModel( PagePanelModel m )
{
model = m;
}
/**
* setGUI
*/
private void setGUI()
{
add( btnFirstPage );
add( btnPreviousPage );
add( btnNextPage );
add( btnLastPage );
add( lblPage );
readModel();
}
private void addActionListener()
{
btnFirstPage.addActionListener( this );
btnPreviousPage.addActionListener( this );
btnNextPage.addActionListener( this );
btnLastPage.addActionListener( this );
}
/**
* 模型已经改变,修改界面.
*/
void readModel()
{
//System.out.println( model.getTotalPage() + " " + model.getCurrPage() );
if( model.getTotalPage() == 0 || model.getCurrPage() == 0 )
{
btnFirstPage.setEnabled( false );
btnPreviousPage.setEnabled( false );
btnNextPage.setEnabled( false );
btnLastPage.setEnabled( false );
}
else
{
btnFirstPage.setEnabled( true );
btnLastPage.setEnabled( true );
// btnPreviousPage
if( model.getCurrPage() == 1 )
{
btnPreviousPage.setEnabled( false );
}
else
{
btnPreviousPage.setEnabled( true );
}
// btnNextPage
if( model.getCurrPage()<model.getTotalPage() )
{
btnNextPage.setEnabled( true );
}
else
{
btnNextPage.setEnabled( false );
}
}
lblPage.setText( model.getCurrPage() + "/" + model.getTotalPage() );
}
/**
* 这是四个protected函数,供子类调用,来维护组件自己的状态.
*/
private void first()
{
clickedButton = FIRST;
model.setCurrPage( 1 );
}
/*
*
*/
private void next()
{
clickedButton = NEXT;
int curr = model.getCurrPage();
model.setCurrPage( ++curr );
}
/*
*
*/
private void previous()
{
clickedButton = PREVIOUS;
int curr = model.getCurrPage();
model.setCurrPage( --curr );
}
/*
*
*/
private void last()
{
clickedButton = LAST;
model.setCurrPage( model.getTotalPage() );
}
public void setCurrPage( int str )
{
model.setCurrPage( str );
}
public void setTotalPage( int str )
{
model.setTotalPage( str );
}
public PagePanel()
{
this( new PagePanelModel() );
}
public PagePanel( PagePanelModel m )
{
model = m;
model.setView( this );
setGUI();
addActionListener();
}
public PagePanelModel getModel()
{
return model;
}
/**
* implements ActionListener
*/
public void actionPerformed( ActionEvent e )
{
Object o = e.getSource();
if( o == btnFirstPage ) first();
if( o == btnNextPage ) next();
if( o == btnPreviousPage ) previous();
if( o == btnLastPage ) last();
btnClicked();
}
/**
* 专供子类继承使用,告知已经点击了.
*/
protected void btnClicked()
{
}
public int getClickedButton()
{
return clickedButton;
}
public static void main( String[] args )
{
JFrame f = new JFrame();
PagePanelModel model = new PagePanelModel();
PagePanel pp = new PagePanel( model );
model.setTotalPage( 5 );
model.setCurrPage( 1 );
JPanel p = new JPanel();
p.add( pp );
f.getContentPane().add( p );
f.setSize( 320 , 240 );
f.setVisible( true );
}
private int clickedButton;
public static final int FIRST = 1;
public static final int PREVIOUS = 2;
public static final int NEXT = 3;
public static final int LAST = 4;
/* 子类的例子,覆盖了protected函数
private class SouthPagePanel extends PagePanel
{
public SouthPagePanel( PagePanelModel m )
{
super( m );
} protected void btnClicked()
{
controller.pagePanelBtnClick();
}
}*/
}
{
private PagePanel view;
void setView( PagePanel v )
{
view = v;
}
// currPage
private int currPage = 1;
public void setCurrPage( int str )
{
if( str<0 )
{
currPage = 0;
JOptionPane.showMessageDialog( view , "当前页数不能为负数:" + str );
}
else
{
currPage = str;
}
fireDataChanged();
}
public int getCurrPage()
{
return currPage;
}
// totalPage
private int totalPage = 0;
public void setTotalPage( int str )
{
if( str<0 )
{
totalPage = 0;
JOptionPane.showMessageDialog( view , "总页数不能为负数::" + str );
}
else
{
totalPage = str;
}
fireDataChanged();
}
public int getTotalPage()
{
return totalPage;
}
private void fireDataChanged()
{
view.readModel();
}
}
web分页弄数了,swing里的一样的,使用的组建不同而已