标签:
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); //粘贴事件
}
}
标签:
原文地址:http://blog.csdn.net/cb_fxb/article/details/46519953