【Java - 图形界面设计】窗体 && 组件 && 事件
窗体
窗体对象JFrame
package com.EveX.frame;
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) {
/*创建窗体*/
JFrame frame = new JFrame();
/*设置窗体大小,参数宽和高,单位:像素*/
frame.setSize(500, 500);
/*设置窗体标题*/
frame.setTitle("我是左上角的标题");
/*设置窗口关闭模式:关闭窗口时终止程序*/
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
/*设置窗体可见,一定要放在最后!*/
frame.setVisible(true);
}
}
组件
-
放在窗体面板中的内容(按钮、图片等)为组件
-
添加组件步骤:
-
注意:如果多个组件放在同一个位置,类似进栈操作,先进先出
按钮:JButton
文字、图片:JLable
组件代码
package com.EveX.frame;
import javax.swing.*;
public class FrameTest {
public static void main(String[] args) {
/*创建窗体*/
JFrame frame = new JFrame();
/*设置窗体大小,参数宽和高,单位:像素*/
frame.setSize(500, 500);
/*设置窗体标题*/
frame.setTitle("我是标题");
/*设置窗口关闭模式:关闭窗口时终止程序*/
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
/*取消组件默认布局*/
frame.setLayout(null);
/* JButton组件 */
// 创建按钮组件
JButton btn = new JButton("按钮");
// 设置按钮位置
btn.setBounds(50, 50, 100, 100);
// 添加组件至窗体面板
frame.getContentPane().add(btn);
/* JLable组件 */
// 创建文本
JLabel txt = new JLabel("文本");
txt.setBounds(50, 150, 100, 100);
frame.getContentPane().add(txt);
// 创建图片
JLabel pic7 = new JLabel(new ImageIcon("/Users/evex/Projects/IDEA/image/2.png"));
pic7.setBounds(50, 300, 100, 100);
frame.getContentPane().add(pic7);
/*设置窗体可见,一定要放在最后!*/
frame.setVisible(true);
}
}
事件
事件监听
事件冲突
btn.setFocusable(false);
事件监听代码
package com.EveX.listener;
import javax.swing.*;
import java.awt.event.*;
public class ListenerTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setLayout(null);
JButton btn = new JButton("按钮");
btn.setBounds(0, 0, 100, 100);
frame.getContentPane().add(btn);
// 取消按钮组件的焦点
btn.setFocusable(false);
/* 添加鼠标和空格监听 */
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("鼠标点击...");
}
});
// btn.addActionListener(e -> System.out.println("鼠标点击..."));
/* 添加键盘按键监听 */
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == 37) {
System.out.println("方向左键");
} else if(keyCode == 38) {
System.out.println("方向上键");
} else if(keyCode == 39) {
System.out.println("方向右键");
} else if(keyCode == 40) {
System.out.println("方向下键");
}
System.out.println(keyCode);
}
@Override
public void keyReleased(KeyEvent e) {
}
});
/* 适配器设计模式:
使用接口KeyListener的键盘适配器KeyAdapter作为匿名内部类
从而实现只重写一个需要的抽象方法的目的
*/
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
System.out.println(keyCode);
}
});
frame.setVisible(true);
}
}