您的位置:首页 > 其它

Swing之卡片布局管理器实例

2013-09-19 08:59 363 查看
1 这个有点意思,貌似用处也不大,很好理解,为了保证实例整合,尽量把实例公共部分整合到父类Frameset中了,为了减少冗余代码,可能有的人不太了解

package com.szsm.swing.framepanel;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.szsm.swing.parent.FrameSet;

public class CardFrame extends FrameSet{

public CardFrame() {
}

@Override
protected void init() {
super.init();
}

@Override
protected void initInterface() {
// TODO Auto-generated method stub
super.initInterface();

final CardLayout cardLayout = new CardLayout();
final JPanel cardPanel = new JPanel(cardLayout);
parentContainer.add(cardPanel,BorderLayout.CENTER);
for (int i = 1; i < 10; i++) {
JLabel label = new JLabel("card"+i);
cardPanel.add(label);
}

JPanel btnPanel  = new JPanel();
parentContainer.add(btnPanel,BorderLayout.SOUTH);
String[] strs = new String[]{"first","last","previous","after"};
for (int i = 0; i < 4; i++) {
final JButton btn = new JButton(strs[i]);
btnPanel.add(btn);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println(btn.getText());
if("previous".equals(btn.getText()))
{
cardLayout.previous(cardPanel);
}
else if("after".equals(btn.getText()))
{
cardLayout.next(cardPanel);
}
else if("first".equals(btn.getText()))
{
cardLayout.first(cardPanel);
}
else if("last".equals(btn.getText()))
{
cardLayout.last(cardPanel);
System.out.println("deo");
}

}
});
}

}
public static void main(String[] args) {
new CardFrame();
}
}


2 把Frameset贴出来了,一个有三个初始化的地方,这三个是自动调用的,本来不重写也可以的,但是为了完成自身的实例必须要重写呢,要不就自己 不重写,写的别的方法,好在我的不是抽象方法,不必必须实现。不然更加让人看的一头雾水。此父类对Swing组下所有的实例都适用,都在用这个父类

package com.szsm.swing.parent;

import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;

public abstract class FrameSet extends JFrame{

protected Container parentContainer = null;
public FrameSet() {
init();
initInterface();
initend();
System.out.println("是否调用");
}

protected void init()
{
this.setLocation(400,100);
this.setSize(400,300);
}

protected void initInterface()
{
parentContainer = this.getContentPane();
System.out.println("是否调用2");
}

protected void initend()
{
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
super.windowClosing(e);
FrameSet.this.dispose();
}
});
}
}


3

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: