実験4グラフィカルユーザーインターフェイスとイベント処理


1.実験の目的

  1. グラフィカルユーザーインターフェイスの基本コンポーネントを習得する
  2. グラフィカルユーザーインターフェイスのメインコンテナとレイアウトをマスターする
  3. グラフィカルインターフェイスのイベント処理モデルに精通している
  4. シンプルなインターフェース設計とインシデント対応が可能

2.実験内容

1.1。ウィンドウを作成します。ウィンドウ内でマウスをクリックすると、クリック位置の座標がウィンドウのタイトルバーに表示されます。示されているように:

ここに写真の説明を挿入

2.2。次のインターフェイスを実装するプログラムを作成します(ユーザー名とパスワードをそれぞれ000と111と入力すると、右下に「Welcome、000」と表示されます)。

ここに写真の説明を挿入

提示:
1)ユーザーがボタンを操作すると、ActionEventイベントがトリガーされます。これは、ActionListenerインターフェイスを実装するクラスによって処理される必要があります。フレームの閉じるボタンをユーザーが操作すると、WindowEventイベントがトリガーされます。これは、WindowListenerインターフェイスを実装するクラスによって実行される必要があります。扱う。(アダプターまたは匿名の内部クラスを使用してイベントを処理することもできます)


2)GridLayoutを使用したレイアウト


3)パスワードボックスに文字を返す(返す)インターフェイスがawtコンポーネントを使用する場合は、TextFieldのsetEchoCharメソッドを使用して設定します。swingコンポーネントを使用する場合は、JPasswordField(軽量テキストボックス)とsetEchoCharを直接使用します。 JTextFieldを使用する代わりにメソッド設定。JDKAPIを参照してください


4)ウィンドウは通常、適切なサイズで表示され、setVisible、pack、setSizeなどのメソッドの使用に注意し、JDKAPIを参照する必要があります。


5)手順を実行して、最初にインターフェイスを設計し、ウィンドウと内部要素を定義し、インターフェイスを作成して表示してから、正しいイベント処理を入力します。


問題:

ユーザーがテキストボックスから取得した文字列「111」など、入力の前後に誤ってスペースを入力し、それでも入力が正しいと信じていることを考えると、プログラムで何をすべきですか?

3.実験的分析、コードおよび操作結果

1)

import java.awt.event.*;
import javax.swing.JFrame;
public class Work{
    
    
	public Work() {
    
    
		JFrame jf = new JFrame("jf");
		// 添加鼠标监听
		jf.addMouseListener(new MouseAdapter() {
    
    
			public void mouseClicked(MouseEvent e) {
    
    
				System.out.println(e.getX()+","+e.getY());
				jf.setTitle("("+ e.getX()+","+e.getY()+")");
			}
		});
		
		// 设置窗口默认关闭事件
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setSize(500,200);
		jf.setVisible(true);
		
	}
	
	public static void main(String[] args) {
    
    
		Work w1 = new Work();
	}
}

動作結果:

ここに写真の説明を挿入

分析:

マウスクリックイベントをリスナーに追加し、ウィンドウがクリックされたときにトリガーされるmouseClickedメソッドを実装します。JFrameオブジェクトのsetTitleメソッドを使用してタイトルコンテンツを設定し
、イベントオブジェクトeのgetXメソッドとgetYメソッドを使用してクリック座標を取得します。

2)

import java.awt.Button;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 窗口界面
 * @author sweetheart
 *
 */

public class Work01 {
    
    

	public static void main(String[] args) {
    
    
		
		// 创建顶层容器对象
		JFrame jf = new JFrame("");
		
		// 获取jf对象的面板
		Container con = jf.getContentPane();
		
		// 设置网格分布
		con.setLayout(new GridLayout(0,2));
		
		// 创建组件对象添加到顶层容器中
		JLabel L1 = new JLabel("请输入用户名  ");
		JLabel L2 = new JLabel("请输入密码  ");
		JLabel L3 = new JLabel("");
		JTextField jtf1 = new JTextField();
		JPasswordField jtf2 = new JPasswordField();
		Button bt = new Button("确定");
		
		// 监听鼠标点击按钮bt的事件(适配器、匿名类)
		bt.addMouseListener(new MouseAdapter() {
    
    
			public void mouseClicked(MouseEvent e) {
    
    
				// 实现mouseClicked方法
				// 获取用户名输入框输入的内容并将前后的空格去除
				String user = jtf1.getText().strip();
				// 获取输入的密码
				String pass = jtf2.getText();
				// 检验密码输入是否正确
				if(user.equals("000")&&pass.equals("111")) {
    
    
					L3.setText("欢迎,000");
				}else {
    
    
					L3.setText("用户名或密码错误");
				}
			}
		});
		
		jf.add(L1);
		jf.add(jtf1);
		jf.add(L2);
		jf.add(jtf2);
		jf.add(bt);
		jf.add(L3);
		
		// 添加窗口关闭事件监听器
		jf.addWindowListener(new WindowAdapter() {
    
    
			
			public void windowClosing(WindowEvent e) {
    
    
				System.exit(0);
			}
			
		});
		
//		jf.setSize(300,150);
		jf.setBounds(100,100,400,150);
		jf.setVisible(true);
		
	}
}

動作結果:

ここに写真の説明を挿入

分析:

基本的な考え方:
1)最上位コンテナオブジェクトを作成する
2)jfオブジェクトのパネルを取得する
3)グリッド分布を設定する
4)コンポーネントオブジェクトを作成して最上位コンテナに追加する
5)マウスクリックボタンbt(アダプタ、匿名クラス)のイベントをリッスンする
6)実装mouseClickedメソッド
7)ウィンドウを閉じるイベントリスナーを追加します
8)ウィンドウを表示するように設定します

総括する:

AWTコンポーネント:

ここに写真の説明を挿入

スイングコンポーネントクラス階層:

ここに写真の説明を挿入

一般的なコンテナ:

1)トップコンテナ-JFrame
2)一般コンテナ-JPanel

レイアウトマネージャー:

FlowLayout ------フローレイアウトマネージャー
BorderLayout -----ボーダーレイアウトマネージャー
GridLayout -----グリッドレイアウトマネージャー
CardLayout ----カードレイアウトマネージャー
GridBagLayout ----グリッドパックレイアウトマネージャー
BoxLayout -----ボックスレイアウトマネージャー

イベント監視用の一般的なインターフェイス(および一般的な方法):

ActionListener
---- public void actionPerformed(ActionEvent e)
WindowListener
---- public void windowClosing(WindowEvent e)
MouseListener
---- public void mouseClicked(MouseEvent e)

アダプターの使用に協力する(匿名クラス)

//ウィンドウを閉じるイベントリスナーを追加します
jf.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } });



おすすめ

転載: blog.csdn.net/qq_46456049/article/details/109240847
おすすめ