JAVASE学习笔记:第十章 SWing常用控件类(三)

11、设置JFrame背景图片

JPanel c= (JPanel)this.getContentPane(); //创建jpanel

Toolkit t=Toolkit.getDefaultToolkit();

//背景图片,将panel不透明设置为false

c.setOpaque(false);

JLabel label = new JLabel();

URL usrc=this.getClass().getClassLoader().getResource("\\images\\bg.JPG");

ImageIcon icon = new ImageIcon(usrc);

// 常规背景:图片原始大小

label.setIcon(icon);

label.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());

//拉伸背景:适应窗体大小

int w = this.getWidth();

int h = this.getHeight();

Image img = icon.getImage().getScaledInstance(w, h, Image.SCALE_FAST);

label.setIcon(new ImageIcon(img));

label.setBounds(0, 0, w,h);

//把背景图片添加到分层窗格的最底层作为背景

this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));

12、JPanel 添加背景图片(重写paintComponent方法)

protected void paintComponent(Graphics g) {

URL url=this.getClass().getClassLoader().getResource("\\images\\123.jpg");

ImageIcon icon=new ImageIcon(url);

Image img=icon.getImage();

g.drawImage(img, 0, 0, null);

}

13、JTabbedPane  选项卡

public void addtab(){

JTabbedPane tab=new JTabbedPane();

JPanel p1=new JPanel();//新建两个面板

JPanel p2=new JPanel();

p1.setBackground(Color.red);

tab.addTab("aa",p1);//将面板添加到选项卡

tab.addTab("bb",p2);

BorderLayout  b=new BorderLayout(10,10);  //设置布局

jp.setLayout(b);

jp.add(tab,b.CENTER);

}

14、JTable  表格

/*

* 创建jtable第一种方法

*/

public void addjtable(){

String [] title={"编号","姓名","年龄","性别","分数"};

Object [][] data={

{"1","小李","15","女","59"},

{"1","小李","15","女","59"},

{"1","小李","15","女","59"},

{"1","小李","15","女","59"}

};

JTable jt=new JTable(data,title);

JScrollPane jsp=new JScrollPane(jt);

jsp.setSize(500, 100);

jsp.setLocation(0, 0);

this.getContentPane().add(jsp);

this.getContentPane().setLayout(null);

}

/*

* 创建jtable第二种方法

*/

public void addjtable2(){

JTable jt=new JTable();

DefaultTableModel model=new DefaultTableModel();

String [] title={"编号","姓名","年龄","性别","分数"};

model.setColumnIdentifiers(title);//创建表格模型列标识符

String [] row1={"1","小李","15","女","59"};

String [] row2={"2","小王","15","女","59"};

model.addRow(row1);

model.addRow(row2);

jt.setModel(model);//将model装到jtable

JScrollPane jsp=new JScrollPane(jt);

jsp.setSize(500, 100);

jsp.setLocation(0, 150);

this.getContentPane().add(jsp);

this.getContentPane().setLayout(null);

}

15、三大布局

第一布局: 东南西北中布局BorderLayout(系统默认的用这个布局)

JPanel jp=new JPanel();

jp.setLayout(new BorderLayout());

jp.add(控件,BorderLayout.CENTER);

第二布局:流水布局FlowLayout   先把第一行占满,再去布局第二行

Panel jp=new JPanel();

jp.setLayout(new BorderLayout(FlowLayout.LEFT));

jp.add(控件);

第三布局:网格布局GridLayout

默认值是:1行n列

GridLayout(2,0);行不为0时控制行数,不能控制列数

GridLayout(0,2);行为0时控制列数,不能控制行数,平时使用控制列的情况多

二、事件event

什么是事件?  表示要发生的某件事 ,eg:鼠标按下

事件源?      发生某件事的原始位置,

监听器?      负责监听是否发生事件,如果发生指定的事件则执行指定的事件

通过局部内部类(不常用)、内部类、匿名类和实现接口三种方式添加监听器

1、局部内部类不能用修饰符,必须用final常量,范围只能在方法中使用,不推荐

2、内部类

/*

* 通过内部类实现动作事件接口

*/

public class act implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==jb1){

System.out.println("确定按钮被点击");

}

if(e.getSource()==jb2){

System.out.println("取消啦");

}

}

}

/*

* 创建按钮并增加监听事件

*/

public void addbtn(){

jb1.setSize(100, 30);

jb1.setLocation(30, 30);

jb1.addActionListener(this.new act());

jb2.setSize(100, 30);

jb2.setLocation(30, 100);

jb2.addActionListener(this.new act());

this.getContentPane().add(jb1);

this.getContentPane().add(jb2);

this.getContentPane().setLayout(null);

}

3、直接通过匿名类

/*

* 创建按钮并通过匿名类增加点击事件

*/

public void addbtn(){

jb1.setSize(100, 30);

jb1.setLocation(20, 20);

jb1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println("aaa");

}

});

this.getContentPane().add(jb1);

jb2.setSize(100, 30);

jb2.setLocation(20, 100);

jb2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println("bbb");

}

});

this.getContentPane().add(jb2);

this.getContentPane().setLayout(null);

}

4、实现ActionListener接口(记事本实现打开文件选择器JFileChooser,并实现复制粘贴功能),鼠标右击弹出菜单JPopupMenu,  通过showOpenDialog 显示文件选择器

package cb.event;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

import javax.swing.*;

/**

*记事本添加复制粘贴事件

*2015-6-10

*作者    常宝

*/

public class note extends JFrame implements ActionListener{

/*

* ***********************成员变量*******************

*/

JMenuItem it3=new JMenuItem("打开");

JTextArea jta=new JTextArea();

JFileChooser jfc=new JFileChooser();

JPopupMenu jpop=new JPopupMenu(); //创建右击菜单

JMenuItem jpop1=new JMenuItem("复制");

JMenuItem jpop2=new JMenuItem("粘贴");

Container c=this.getContentPane();

/*

* ***********************内部类*******************

*/

/*

* 鼠标点击事件

*/

class mouselis extends MouseAdapter{

@Override

public void mouseClicked(MouseEvent e) {

if(e.getButton()==MouseEvent.BUTTON3){

jpop.show(jta, e.getX(), e.getY());

}

}

}

/*

* ***********************成员方法*******************

*/

/*

* 事件方法

*/

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==it3){

int val=jfc.showOpenDialog(jta);

if(val==JFileChooser.APPROVE_OPTION){

File  f=   jfc.getSelectedFile();

System.out.println(f.getName());

}

}

if(e.getSource()==jpop1){

jta.copy();

}

if(e.getSource()==jpop2){

jta.paste();

}

}

/*

* 主方法

*/

public static void main(String[] args) {

new note();

}

/*

* 初始化窗体

*/

public void init(){

this.setTitle("记事本");

this.setSize(600, 500);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(3);

jpop.add(jpop1);

jpop.add(jpop2);

addbar();

addarea();

bindevent();

}

/*

* 构造函数

*/

public note(){

init();

this.setVisible(true);

}

/*

* 创建文本区域

*/

public void addarea(){

JScrollPane jsp=new JScrollPane(jta);

jsp.setSize(this.getWidth()-5, this.getHeight()-50);

jsp.setLocation(0,20);

c.setLayout(null);

c.add(jsp);

}

/*

* 创建菜单栏

*/

public void addbar(){

//创建菜单栏

JMenuBar jmb=new JMenuBar();

jmb.setSize(this.getWidth(), 20);

jmb.setLocation(0, 0);

c.add(jmb);

c.setLayout(null);

//创建菜单

JMenu filemenu=new JMenu("文件(F)");

JMenu editmenu=new JMenu("编辑(E)");

JMenu editmenu1=new JMenu("格式(O)");

JMenu editmenu2=new JMenu("查看(V)");

JMenu editmenu3=new JMenu("帮助(H)");

//设置快捷键

filemenu.setMnemonic(‘f‘);

editmenu.setMnemonic(‘e‘);

editmenu1.setMnemonic(‘o‘);

editmenu2.setMnemonic(‘v‘);

editmenu3.setMnemonic(‘h‘);

//添加菜单到菜单栏

jmb.add(filemenu);

jmb.add(editmenu);

jmb.add(editmenu1);

jmb.add(editmenu2);

jmb.add(editmenu3);

//创建菜单项

JMenuItem it1=new JMenuItem("新建");

JMenuItem it2=new JMenuItem("保存");

JMenuItem it4=new JMenuItem("退出");

//添加菜单项到    文件菜单

filemenu.add(it1);

filemenu.add(it2);

filemenu.add(it3);

//添加分割符

filemenu.addSeparator();

filemenu.add(it4);

//创建菜单项

JMenuItem it11=new JMenuItem("复制");

JMenuItem it12=new JMenuItem("剪切");

JMenuItem it13=new JMenuItem("粘贴");

JMenuItem it14=new JMenuItem("查找");

//添加菜单项到    编辑菜单

editmenu.add(it11);

editmenu.add(it12);

editmenu.add(it13);

editmenu.add(it14) ;

}

/*

* 绑定事件

*/

public void bindevent(){

it3.addActionListener(this);//打开事件

jta.addMouseListener(new mouselis());//鼠标右击事件

jpop1.addActionListener(this); //复制事件

jpop2.addActionListener(this); //粘贴事件

}

}

时间: 2024-08-06 03:41:23

JAVASE学习笔记:第十章 SWing常用控件类(三)的相关文章

JAVASE学习笔记:第十章 SWing常用控件类

AWT(abstract windows toolkit)    抽象窗体工具包,所以java.awt下 缺点:在AWT中存在缺少剪贴板.缺少打印支持等缺陷,甚至没有弹出式菜单和滚动窗口等,AWT依赖于特定的系统 Swing显示性能比AWT要好,而且是纯JAVA来实现,具有跨平台性,因此,实用性比AWT要强,但有些基础功能还需要借助AWT实现,所以不能完全取代AWT Swing所在javax.swing包 1.JFrame  窗体 JFrame jf=new JFrame(); //初始化不可见

JAVASE学习笔记:第十章 SWing常用控件类(二)

7.JComboBox 下拉列表 /* * 初始化下拉列表 */ public void addcomb(){ String[] area = {"山西省", "山东省", "河北省", "陕西省"}; JComboBox jb=new JComboBox(area); jb.setSize(70, 20); jb.setLocation(120, 200); jb.setOpaque(false); c.add(jb); S

【WPF学习】第十九章 控件类

原文:[WPF学习]第十九章 控件类 WPF窗口充满了各种元素,但这些元素中只有一部分是控件.在WPF领域,控件通常被描述为与用户交互的元素--能接收焦点并接受键盘或鼠标输入的元素.明显的例子包括文本框和按钮.然而,这个区别有时有些模糊.将工具提示视为控件,因为它根据用户鼠标的移动显示或消失.将标签视为控件,因为它支持记忆码(mnemonics,将焦点转移到相关控件快捷键). 所有控件都继承自System.Windows.Control类,该类添加了一小部分基本的基础结构: 设置控件内容对齐方式

14.4-全栈Java笔记: javax.swing常用控件有哪些?怎么用?

常用基本控件 javax.swing.JButton 在图形界面程序中,按钮可能是使用量最大的控件之一,javax.swing包中JButton类就是用来创建按钮的.如表1所示,为JButton常用的构造方法.  javax.swing.JLabel JLabel控件是最简单的Swing组件之一,用于在窗体上显示标签, JLabel既可以显示文本,也可以显示图像.如表3所示,为JLabel常用的构造方法. 注意: JLabel只能用于显示文本和图标信息,用户不能对其进行修改. javax.swi

Android学习笔记(七)——常见控件

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 给我们提供了大量的 UI控件,下面我们简单试试几种常用的控件. 一.TextView 在布局文件中加入TextView元素: 1 <TextView android:text="This is TextView!" 2 android:gravity="center" 3 android:layout_width="match_parent&qu

C#学习笔记(20140910)-单选控件和单选组控件、复选控件、复选组控件

晚上学习了一下单选控件和单选组控件.复选控件.复选组控件. 稍微动了点脑筋,做了一个小小的网页程序.主要功能是相互赋值已经设置标签的字体大小和颜色已经前后背景色. 主要功能: 1. 在文本输入框中输入文字,提交后可以对标签赋值: 2. 选择单选框可以给标签赋值: 3. 选择单选组控件时可以给标签设置颜色: 4. 选择单选组控件时可以给字体设置大小. 最后的效果如下: 分块设置就不多说了,看看用到了哪些模块吧: 1. 自定义了一个方法,把标签的值赋值给输入框.使得输入框中的内容和标签的内容一致.

cocos2d-x学习笔记(六)TextBMFont控件显示中文乱码或者无法显示

今天用cocos studio加了一个TextBMFont控件,然后需要动态修改TextBMFont控件显示的字符串,用来显示中文的,结果一直无法修改TextBMFont控件的值,最后原来是写到xml文件的中文字符串没有保存成UTF-8格式. ===================================================================================== 记录一下完整实现步骤 一.制作BMFont字体 1.下载并安装BMFont软件 2.

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

C#学习笔记(20140909)-按钮控件:单击事件和command事件

在 Web 应用程序和用户交互时,常常需要提交表单.获取表单信息等操作.在这其间,按钮控件是非常必要的.按钮控件能够触发事件,或者将网页中的信息回传给服务器.在 ASP.NET 中,包含三类按钮控件,分别为 Button.LinkButton.ImageButton. Click 单击事件 在Click 单击事件中,通常用于编写用户单击按钮时所需要执行的事件,这种事件很简单,用户单击一个按钮,就会执行按钮中的代码. Command 命令事件 按钮控件中,Click 事件并不能传递参数,所以处理的