GUI练习中

总结:JFrame和Frame是有很大差别的。

不要混淆。否则方法是不能成功调用的

特别是背景色;JFrame.对象f在main里无法调用背景色前景色都不想显示

一下是书上的一段代码,编译错误,但是可以运行。当然这个结果很有点不正常。它的事件都无法实现在f上

package com.tent;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JLabel;
//做一个框架
import javax.swing.JButton;
import javax.swing.JFrame;
public class JavaGUI {
		//private static final MouseListener Button1Handler = null;
		//必须要是static
		//犯了一个很严重的错误,对象的创建和方法的调用都用在main函数里面,这里应该放到类里面。否则都不可能编程静态
	static Frame f=new Frame();//注意既然其他的组件都不是扩展类。那么框架也不为扩展窗口
	static 	Label lb1=new Label("JavaGUI演示程序");
	static	Label lb2=new Label("欢迎学习javaGUI编程");
	static	Label lb3=new Label("当前发生的按钮事件");
	static	Button jb1=new Button("会说话的按钮");
	static	Button jb2=new Button("退出的按钮");
		///因为我用的组件都是扩展型,所以方法背景,前景都无法调用
		public static void main(String[] args) {
	
			f.add(lb1);
			f.add(lb2);
			f.add(lb3);
			f.add(jb1);
			f.add(jb2);
			f.setForeground(Color.red);
			f.setBackground(Color.orange);
			f.setSize(200,200);
		//	f.setLayout(null);///这里布局出错
			f.setLayout(new FlowLayout());
			lb3.setBackground(Color.CYAN);//设置标签的背景色
			jb1.addMouseListener(new Button1Handler());//单击某个按钮即可	触发ActionEvent事件。也可以触发MouseEvent事件
			jb2.addActionListener(new Button2Handler());
			f.setLocationRelativeTo(null);
			f.setVisible(true);
			f.setLayout(null);
			
		}
}				//不必声明静态的私有属性
		class Button1Handler implements MouseListener{

			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				//按下点击事件
			JavaGUI.lb3.setText("你已经单击鼠标");
				
			}

			@Override
			public void mousePressed(MouseEvent e) {
				JavaGUI.lb3.setText("你已经按下鼠标");
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent e) {
					//JavaGUI.lb3.setText("");
			}

			@Override
			public void mouseEntered(MouseEvent e) {
				JavaGUI.lb3.setText("你已经按下按钮");
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				JavaGUI.lb3.setText("你已经离开按钮上方");
				
			}
		
		}
			class Button2Handler implements ActionListener{

				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					System.exit(0);
				}
				
				
				
			}

  

原文地址:https://www.cnblogs.com/langlove/p/3434794.html