Swing超基础学习总结——4、CardLayout与ActionListener
来源:互联网 发布:网络词汇大全 编辑:程序博客网 时间:2024/06/01 23:37
- 使用CardLayout制作切换卡
- 案例代码
- CardLayout详细说明
- 切换卡主要方法
- ActionListener详细说明
- 使用方法
- 案例代码统计点击次数
使用CardLayout制作切换卡
案例代码:
public class CardLayoutAndListenerTest { /** * @param args */ static JButton preButton; static JButton nextButton; static Panel controlPanel; static Panel cardPanel; static CardLayout c; public static void main(String[] args) { controlPanel = new Panel(); controlPanel.setLayout(new FlowLayout()); cardPanel = new Panel(); cardPanel.setLayout(new FlowLayout()); c = new CardLayout(); JFrame frame = new JFrame(); frame.setSize(300, 200); frame.setLayout(new BorderLayout()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); cardPanel.setLayout(c); for (int i = 0; i < 5; i++) { // 按顺序添加页,第一个添加在最上面,依次类推 cardPanel.add(new JButton("按钮" + i)); } preButton = new JButton("前一张"); nextButton = new JButton("后一张"); //绑定监听 preButton.addActionListener(actionListener); nextButton.addActionListener(actionListener); controlPanel.add(preButton); controlPanel.add(nextButton); frame.add(cardPanel, BorderLayout.CENTER); frame.add(controlPanel, BorderLayout.SOUTH); } //注册监听 static ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //对应某个按钮的变量名 if (e.getSource() == preButton) { // 打开前一页 c.previous(cardPanel); } if (e.getSource() == nextButton) { // 打开后一页 c.next(cardPanel); } } };}
CardLayout详细说明
卡片布局,切换卡片,即局部刷新
给某一容器设置卡片布局后,添加每一个组件都当做是一页,第一个组件即第一页,注意这里是一个组件(也可是一个容器)为一页
“切换卡”主要方法
使用卡片布局的对象执行next方法(后一页)或previous方法(前一页)
方法参数为执行切换卡的容器对象
ActionListener详细说明
使用方法
方法1:
①注册监听:
ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ...... }};
②绑定监听:
组件对象.addActionListener(actionListener);
方法2:
①实现ActionListener,重写方法
@Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button) { …… } }
②绑定监听
组件对象.addActionListener(this);
案例代码(统计点击次数):
上述使用方法1已经在CardLayout的代码中展示了,接下的案例是用使用方法2来现实的。
public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ActionFrame actionFrame = new ActionFrame("ActionListener实例"); }}class ActionFrame extends JFrame implements ActionListener { JButton button; int i = 0; JLabel jLabel; public ActionFrame(String title) { // TODO Auto-generated constructor stub setSize(300, 200); setTitle(title); setLayout(new BorderLayout()); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); jLabel = new JLabel("点击次数:0", JLabel.CENTER); // 设置JLable中的文字居中 // jLabel.setHorizontalAlignment(JLabel.CENTER); button = new JButton("点击"); button.addActionListener(this); Container container = getContentPane(); container.add(jLabel, BorderLayout.CENTER); container.add(button, BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button) { i++; jLabel.setText("点击次数:" + i); } }}
注:第一个案例中用了很多static,静态变量是很浪费内存的,但是由于main方法为静态所以全局变量只能用静态变量,因此大部分情况下还是比较适合用第二个案例中的方式。
关于swing的学习还剩下菜单和列表,加油!!
1 0
- Swing超基础学习总结——4、CardLayout与ActionListener
- Swing超基础学习总结——1、简单的登录窗口样式
- Swing超基础学习总结——2、简单布局:FlowLayout、GridLayout、BorderLayout、BoxLayout
- Swing超基础学习总结——3、复杂布局:GridBagLayout
- Swing超基础学习总结——5、菜单(JMenu、JMenuBar、JMenuItem)
- Swing超基础学习总结——6、JTable和JScrollPane
- Java学习笔记之SWING -- 基本SWING程序(基础的ActionListener响应)
- Java Swing事件处理——行为事件及监听处理 ActionListener和内部类
- 【Swing】 事件处理+actionlistener
- swing学习笔记十一(卡片布局管理器CardLayout )
- 博为峰Java技术文章 ——JavaSE Swing CardLayout布局管理器II
- "超哥与代码"之swing包基础解析balabala
- Swing cardlayout wrong parent for CardLayout问题
- Swing中的ActionListener响应研究
- 基础的ActionListener响应
- Java Layout总结-CardLayout
- Java——CardLayout卡片式格局
- jsf Action 与 ActionListener
- 36个Android开发常用代码片段
- Loadrunner:集合点(Rendezvous)
- TCP阻塞控制详解
- Bmob数据库查询结果为null
- USACO 2009 Open Silver 3.Cow Digit Game简单博弈论
- Swing超基础学习总结——4、CardLayout与ActionListener
- Android静默安装实现方案,仿360手机助手秒装和智能安装功能
- mysql主从复制
- 工作线程中弹出Toast
- 技术之外
- leetcode :Binary Search:Sqrt(x)(069)
- consul 配置---K/V存储及ACL
- runtime
- Picasso的基本使用