java swing 事件问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing 事件问题相关的知识,希望对你有一定的参考价值。
有一个JFrame(FrameA类)和两个JPanel面板(PaneA类,PaneB类)
PaneA类和PaneB类都被添加到FrameA类中,
单击PaneA类中的按钮,使PaneB显示不同内容,事件怎么控制?
最好详细点
一定加分
谢谢了!
定义一个窗口frame
把这个窗口里头所有显示的组件 面板的引用 都定义在构造方法和其他方法外头
而这些组件的引用 的实例化(new语句) 都放在构造方法里头
然后把这个窗口的显示 和大小 也定义在构造方法里头
然后把关于这个窗口的操作 和改变等类(一般都是接口)
放在这个类的内部...根据变量作用区域规定...内部定义的类是可以直接访问外层类的变量的....这种思路不是强制性的...但是写图形界面程序我觉得很合适
看一个例子 注意(监听器是写在内部的,,才能对button进行操作) 可以直接运行,无错误...
import javax.swing.* ;
import javax.swing.event.* ;
import java.awt.* ;
import java.awt.event.* ;
import java.awt.Container.* ;
public class mainclass//主函数类,很简单就是只对其他类进行定义对象操作
public static void main(String []s)
new mainframe() ;//所谓的匿名类
class mainframe//主窗口的类
JFrame frame ;
Container contain ;
JButton button ;
JLabel label ;
public mainframe()
frame=new JFrame("我的窗口") ; //窗口对象
contain=frame.getContentPane() ; //contain是一个容器,frame.getContentPane() 是获得frame的默认容器
button=new JButton("OK") ;
button.addActionListener(new buttonlistener()) ;//给键添加事件处理的接口
label =new JLabel("这里就是标签了") ;
contain.setLayout(new BorderLayout(20,20)); //容器设置布局管理器(20,20)表示水平,垂直各控件距离10象素
contain.add(button,BorderLayout.SOUTH) ; //BorderLayout.SOUTH是BorderLayout这个布局管理器的常量,表示南(下)方
contain.add(label,BorderLayout.CENTER) ; //同上 表示中间
contain.setBackground(Color.pink) ; //容器设置背景颜色,Color.pink是颜色Color类的常量
frame.setSize(300,200) ; //设置大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//这个表示当你关闭当前窗口直接终止整个程序,如果不设置,就算你关闭了当前窗口程序依然执行
// 因为如果你不这样设置 当你关闭窗口 也仅仅是让窗口不显示,但程序没有停止
frame.setResizable(false); //设置窗口不能再改变大小.只能系统设定,意思就是不能最大化
frame.setVisible(true) ; //显示
class buttonlistener implements ActionListener
int i=0 ;
public void actionPerformed(ActionEvent e)
button.setText("第"+(++i)+"次按键") ;
参考技术A 这样的问题我以前也遇到过,弄了很长时间,
有一个简单的办法,但不一定是标准的。
把PaneA和PaneB上的内容都定义到FrameA上。
这种方法准能实现,试一试。本回答被提问者采纳 参考技术B 说的太笼统了,PanelB显示不同内容到底是什么不同内容呢?
Java Swing界面编程(21)---事件处理:窗口事件
WindowLIstener是专门处理窗口的事件监听窗口。一个窗口的全部变化。如窗口的打开、关闭等都能够使用这个接口进行监听。
实现WIndowListener:
package com.beyole.util; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class MyWindowEventHandle implements WindowListener { @Override public void windowOpened(WindowEvent e) { System.out.println("windowOpened--->窗体被打开"); } @Override public void windowClosing(WindowEvent e) { System.out.println("windowClosing--->窗体关闭"); } @Override public void windowClosed(WindowEvent e) { System.out.println("windowClosed--->窗体被关闭"); } @Override public void windowIconified(WindowEvent e) { System.out.println("windowIconified--->窗体最小化"); } @Override public void windowDeiconified(WindowEvent e) { System.out.println("windowDeiconfied--->窗体从最小化恢复"); } @Override public void windowActivated(WindowEvent e) { System.out.println("windowActivated--->窗体被选中"); } @Override public void windowDeactivated(WindowEvent e) { System.out.println("windowDeactivated--->取消窗体被选中"); } }
单单仅仅有监听器是不够的。还须要在组件使用时注冊监听。这样才干处理,直接使用窗口的addWindowListener(监听对象)方法就可以注冊事件监听
package com.beyole.util; import java.awt.Color; import javax.swing.JFrame; public class MyWindowEventFrame01 { public static void main(String[] args) { JFrame frame=new JFrame("Crystal"); frame.addWindowListener(new MyWindowEventHandle()); frame.setSize(300, 160); frame.setBackground(Color.WHITE); frame.setLocation(300, 200); frame.setVisible(true); } }
程序截图:
结果截图:
以上是关于java swing 事件问题的主要内容,如果未能解决你的问题,请参考以下文章
java swing里文本框控制不能输入汉字,或者输入字符串包含汉字在失去焦点事件时提示用户!
Java学习笔记7.2.2 事件处理 - Swing常用事件