1、JDBC概述
JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成
主要常用操作类与接口:
java.sql.DriverManager 用于管理jdbc驱动程序
Java.sql.Connection 用于建立与特定数据库的连接
Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果
Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口
Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问
2、JDBC操作步骤
(1)加载驱动
public class Text {
public static final String DBDRIVER="ora.gjt.mm.mysql.Driver";
public static void main(String[] args) {
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
(2)连接数据库:使用DriverManager类连接数据库和Connection接口
jdbc:mysql://IP地址:端口号/数据库名称
(3)通过Statement发送sql语句
通过Prepared Statement发送sql语句
(4)关闭数据库
3、MySQL数据库操作
数据库连接
mysql -u用户名 -p密码
数据库创建
创建数据库 CREATE DATABASE 数据库名称;
数据库删除 DROP DATABASE 数据库名称;
使用数据库
USE 数据库名称;
创建数据库表
CREATE TABLE{
字段名称1 字段类型 [DEFAULT 默认值][约束]
字段名称2 字段类型 [DEFAULT 默认值][约束],
...,
字段名称n 字段类型 [DEFAULT 默认值][约束],
删除数据库表 DELETE FROM 表名称
更新 UPDATE 表名称
查询 SELECT{*lcolumn alias} FROM 表名称
记事本
package lastwork;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.Transferable;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.View;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
import org.w3c.dom.Text;
import jdk.jshell.execution.Util;
public class TextPad extends dialog implements ActionListener, DocumentListener{
JFrame frame;
JMenu fileMenu,editManu,formatMenu,checkMenu,helpMenu;
JMenuBar bar;
ImageIcon openicon,newicon,saveicon,saveanothericon,closeicon,linewrapicon;
JMenuItem openitem,newitem,saveitem,saveanotheritem,closeitem,pageitem,pointitem;
JMenuItem repealitem,cutitem,copyitem,stickitem,deleteitem,allitem,timedateitem,finditem,findnextitem,replaceitem,turnitem;
JMenuItem prepealitem,pcutitem,pcopyitem,pstickitem,pdeleteitem,pallitem,ptimedateitem;
JMenuItem linewrapitem,fontitem;
JMenuItem checkhelpitem,aboutitem;
JMenuItem stateitem;
JTextArea area;
JScrollPane scpane;
JFileChooser chooser;
File file;
JButton bt;
JPopupMenu pMenu;
boolean i=false;
boolean isNewFile=true;
File currentFile;
String oldValue;
JLabel statusLabel;
//系统剪贴板
Toolkit toolkit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolkit.getSystemClipboard();
//创建撤销操作管理器(与撤销操作有关)
protected UndoManager undo=new UndoManager();
protected UndoableEditListener undoHandler=new UndoHandler();
public TextPad(){
frame=new JFrame("记事本");
bar=new JMenuBar();
fileMenu=new JMenu("文件(F)");
editManu=new JMenu("编辑(E)");
formatMenu=new JMenu("格式(O)");
checkMenu=new JMenu("查看(V)");
helpMenu=new JMenu("帮助(H)");
statusLabel=new JLabel(" 状态栏");
frame.add(statusLabel,BorderLayout.SOUTH);
area=new JTextArea();
scpane=new JScrollPane(area);
pMenu=new JPopupMenu();
//图片导入路径
newicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"new.png");
openicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"open.png");
saveicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"save.png");
saveanothericon=new ImageIcon("d:"+File.separator+"111"+File.separator+"saveanother.png");
closeicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"close.png");
linewrapicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"d.png");
//调用图片
newitem=new JMenuItem("新建(N)",newicon);
openitem=new JMenuItem("打开(O)",openicon);
saveitem=new JMenuItem("保存(S)",saveicon);
saveanotheritem=new JMenuItem("另存为(A)",saveanothericon);
closeitem=new JMenuItem("关闭(X)",closeicon);
pageitem=new JMenuItem("页面设置(U)");
pointitem=new JMenuItem("打印(P)");
repealitem=new JMenuItem("撤销(U)");
cutitem=new JMenuItem("剪切(T)");
copyitem=new JMenuItem("复制(C)");
stickitem=new JMenuItem("粘贴(V)");
deleteitem=new JMenuItem("删除(L)");
finditem=new JMenuItem("查找(F)");
findnextitem=new JMenuItem("查找下一个(FN)");
replaceitem=new JMenuItem("替换(H)");
turnitem=new JMenuItem("转到(G)");
allitem=new JMenuItem("全选(A)");
timedateitem=new JMenuItem("时间/日期(D)");
linewrapitem=new JMenuItem("自动换行(W)",linewrapicon);
fontitem=new JMenuItem("字体(F)");
stateitem=new JMenuItem("状态栏(S)");
checkhelpitem=new JMenuItem("查看帮助(H)");
aboutitem=new JMenuItem("关于(A)");
//添加为菜单项
fileMenu.add(newitem);
fileMenu.add(openitem);
fileMenu.add(saveitem);
fileMenu.add(saveanotheritem);
fileMenu.addSeparator();
fileMenu.add(pageitem);
fileMenu.add(pointitem);
fileMenu.addSeparator();
fileMenu.add(closeitem);
editManu.add(repealitem);
editManu.addSeparator();
editManu.add(cutitem);
editManu.add(copyitem);
editManu.add(stickitem);
editManu.add(deleteitem);
editManu.addSeparator();
editManu.add(finditem);
editManu.add(findnextitem);
editManu.add(replaceitem);
editManu.add(turnitem);
editManu.addSeparator();
editManu.add(allitem);
editManu.add(timedateitem);
repealitem.setEnabled(false);
cutitem.setEnabled(false);
copyitem.setEnabled(false);
deleteitem.setEnabled(false);
formatMenu.add(linewrapitem);
formatMenu.add(fontitem);
checkMenu.add(stateitem);
helpMenu.add(checkhelpitem);
helpMenu.add(aboutitem);
prepealitem=new JMenuItem("撤销(U)");
pcutitem=new JMenuItem("剪切(T)");
pcopyitem=new JMenuItem("复制(C)");
pstickitem=new JMenuItem("粘帖(P)");
pdeleteitem=new JMenuItem("删除(D)");
pallitem=new JMenuItem("全选(A)");
ptimedateitem=new JMenuItem("时间/日期(D)");
prepealitem.setEnabled(false);
pMenu.add(prepealitem);
pMenu.addSeparator();
pMenu.add(pcutitem);
pMenu.add(pcopyitem);
pMenu.add(pstickitem);
pMenu.add(pdeleteitem);
pMenu.add(pallitem);
pMenu.add(ptimedateitem);
//设置快捷键和提示信息
newitem.setMnemonic(KeyEvent.VK_N);
newitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
openitem.setMnemonic(KeyEvent.VK_O);
openitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
saveitem.setMnemonic(KeyEvent.VK_S);
saveitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
saveanotheritem.setMnemonic(KeyEvent.VK_A);
saveanotheritem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
closeitem.setMnemonic(KeyEvent.VK_X);
closeitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
pageitem.setMnemonic(KeyEvent.VK_U);
pointitem.setMnemonic(KeyEvent.VK_P);
pointitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_DOWN_MASK));
repealitem.setMnemonic(KeyEvent.VK_Z);
repealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
cutitem.setMnemonic(KeyEvent.VK_T);
cutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
copyitem.setMnemonic(KeyEvent.VK_C);
copyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
stickitem.setMnemonic(KeyEvent.VK_V);
stickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
deleteitem.setMnemonic(KeyEvent.VK_L);
deleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
allitem.setMnemonic(KeyEvent.VK_A);
allitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
timedateitem.setMnemonic(KeyEvent.VK_D);
timedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
finditem.setMnemonic(KeyEvent.VK_F);
finditem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_DOWN_MASK));
findnextitem.setMnemonic(KeyEvent.VK_L);
findnextitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
replaceitem.setMnemonic(KeyEvent.VK_H);
replaceitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_DOWN_MASK));
turnitem.setMnemonic(KeyEvent.VK_G);
turnitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_DOWN_MASK));
prepealitem.setMnemonic(KeyEvent.VK_Z);
prepealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
pcutitem.setMnemonic(KeyEvent.VK_T);
pcutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
pcopyitem.setMnemonic(KeyEvent.VK_C);
pcopyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
pstickitem.setMnemonic(KeyEvent.VK_V);
pstickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
pdeleteitem.setMnemonic(KeyEvent.VK_L);
pdeleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
pallitem.setMnemonic(KeyEvent.VK_A);
pallitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
ptimedateitem.setMnemonic(KeyEvent.VK_D);
ptimedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
linewrapitem.setMnemonic(KeyEvent.VK_W);
fontitem.setMnemonic(KeyEvent.VK_F);
stateitem.setMnemonic(KeyEvent.VK_S);
checkhelpitem.setMnemonic(KeyEvent.VK_H);
aboutitem.setMnemonic(KeyEvent.VK_A);
//添加事件监听器
newitem.addActionListener(this);
openitem.addActionListener(this);
saveitem.addActionListener(this);
saveanotheritem.addActionListener(this);
closeitem.addActionListener(this);
pageitem.addActionListener(this);
pointitem.addActionListener(this);
repealitem.addActionListener(this);
cutitem.addActionListener(this);
copyitem.addActionListener(this);
stickitem.addActionListener(this);
deleteitem.addActionListener(this);
allitem.addActionListener(this);
timedateitem.addActionListener(this);
finditem.addActionListener(this);
findnextitem.addActionListener(this);
replaceitem.addActionListener(this);
turnitem.addActionListener(this);
linewrapitem.addActionListener(this);
fontitem.addActionListener(this);
stateitem.addActionListener(this);
checkhelpitem.addActionListener(this);
aboutitem.addActionListener(this);
area.addMouseListener(new MouseAdapter()
{ public void mousePressed(MouseEvent e){
if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
{ pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
}
checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
area.requestFocus();//编辑区获取焦点
}
public void mouseReleased(MouseEvent e)
{ if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
{ pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
}
checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
area.requestFocus();//编辑区获取焦点
}
});
prepealitem.addActionListener(this);
pcutitem.addActionListener(this);
pcopyitem.addActionListener(this);
pstickitem.addActionListener(this);
pdeleteitem.addActionListener(this);
pallitem.addActionListener(this);
ptimedateitem.addActionListener(this);
//编辑区注册事件监听(与撤销操作有关)
area.getDocument().addUndoableEditListener(undoHandler);
area.getDocument().addDocumentListener(this);
//添加主菜单项
bar.add(fileMenu);
bar.add(editManu);
bar.add(formatMenu);
bar.add(checkMenu);
bar.add(helpMenu);
//添加面板及显示
frame.add(scpane);
frame.setJMenuBar(bar);
frame.setSize(800, 550);
frame.setLocation(400, 200);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent arg0) {
System.exit(1);
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj=e.getSource();
if(obj instanceof JMenuItem) {
JMenuItem item=(JMenuItem)obj;
if(item==newitem) {
new TextPad();
}else if(item==openitem) {
chooser=new JFileChooser();
chooser.showOpenDialog(null);
file=chooser.getSelectedFile();
try {
FileInputStream fis=new FileInputStream(file);
byte[] b;
try {
b = new byte[fis.available()];
fis.read(b);
area.append(new String(b));
fis.close();
} catch (IOException e1) {
e1.printStackTrace();
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}else if(item==saveanotheritem) {
chooser=new JFileChooser();
chooser.showSaveDialog(null);
file=chooser.getSelectedFile();
try {
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream fos=new FileOutputStream(file);
byte[] b=area.getText().getBytes();
fos.write(b);
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}else if(item==saveitem) {
file=chooser.getSelectedFile();
try {
FileOutputStream fos=new FileOutputStream(file);
byte[] b=area.getText().getBytes();
fos.write(b);
fos.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}else if(item==closeitem) {
//System.exit(1);
int exitChoose=JOptionPane.showConfirmDialog(this,"确定要退出吗?","退出提示",JOptionPane.OK_CANCEL_OPTION);
if(exitChoose==JOptionPane.OK_OPTION){
System.exit(0);
}else{
return;
}
}else if(item==cutitem||item==pcutitem) {
area.cut();
}else if(item==copyitem||item==pcopyitem) {
area.copy();
}else if(item==stickitem||item==pstickitem) {
area.paste();
}else if(item==allitem||item==pallitem) {
area.selectAll();
}else if(item==deleteitem||item==pdeleteitem) {
String temp = area.getSelectedText();//获得鼠标拖动选取的文本
int start = area.getSelectionStart();
int end = area.getSelectionEnd();
area.replaceRange("",start,end);//选中的区域用""替换
}else if(item==repealitem||item==prepealitem) {
if(e.getSource()==repealitem || e.getSource()==prepealitem){
area.requestFocus();
if(undo.canUndo()){
try{
undo.undo();
}catch (CannotUndoException ex){
System.out.println("Unable to undo:" + ex);
//ex.printStackTrace();
}
}
if(!undo.canUndo()){
repealitem.setEnabled(false);
prepealitem.setEnabled(false);
}
}
}else if(item==timedateitem||item==ptimedateitem) {
Date d = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateNewStr=sdf.format(d);
area.append(dateNewStr);
}else if(item==pageitem) {
area.requestFocus();
JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
}else if(item==pointitem) {
area.requestFocus();
JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
}else if(item==finditem) {
}else if(item==findnextitem) {
}else if(item==replaceitem) {
}else if(item==turnitem) {
}
else if(item==linewrapitem) {
if(!i) {
area.setLineWrap(true);
// area.setWrapStyleWord(true);
i=true;
}else {
area.setLineWrap(false);
// area.setWrapStyleWord(false);
i=false;
}
}else if(item==fontitem) {
area.requestFocus();
font();
}else if(item==stateitem) {
if(!i) {
statusLabel.setVisible(false);
i=true;
}else {
statusLabel.setVisible(true);
i=false;
}
}else if(item==checkhelpitem) {
area.requestFocus();
JOptionPane.showMessageDialog(this,"请自行百度","帮助主题",JOptionPane.INFORMATION_MESSAGE);
}else if(item==aboutitem) {
area.requestFocus();
JOptionPane.showMessageDialog(this,
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"+
" 编写者:张文龙 \n"+
" 编写时间:2019年11月 \n"+
" qq:908866340 \n"+
" 一些地方借鉴他人 \n"+
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n",
"记事本",JOptionPane.INFORMATION_MESSAGE);
}
}
}
private void checkMenuItemEnabled() {
String selectText=area.getSelectedText();
if(selectText==null){
cutitem.setEnabled(false);
pcutitem.setEnabled(false);
copyitem.setEnabled(false);
pcopyitem.setEnabled(false);
deleteitem.setEnabled(false);
pdeleteitem.setEnabled(false);
}else{
cutitem.setEnabled(true);
pcutitem.setEnabled(true);
copyitem.setEnabled(true);
pcopyitem.setEnabled(true);
deleteitem.setEnabled(true);
pdeleteitem.setEnabled(true);
}
//粘帖功能可用性判断
Transferable contents=clipBoard.getContents(this);
if(contents==null){
stickitem.setEnabled(false);
pstickitem.setEnabled(false);
}else{
stickitem.setEnabled(true);
pstickitem.setEnabled(true);
}
}
class UndoHandler implements UndoableEditListener{
public void undoableEditHappened(UndoableEditEvent uee){
undo.addEdit(uee.getEdit());
}
}
public void font(){
final JDialog fontDialog=new JDialog(this,"字体设置",false);
Container con=fontDialog.getContentPane();
con.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel fontLabel=new JLabel("字体(F):");
fontLabel.setPreferredSize(new Dimension(100,20));//构造一个Dimension,并将其初始化为指定宽度和高度
JLabel styleLabel=new JLabel("字形(Y):");
styleLabel.setPreferredSize(new Dimension(100,20));
JLabel sizeLabel=new JLabel("大小(S):");
sizeLabel.setPreferredSize(new Dimension(100,20));
final JLabel sample=new JLabel("张文龙的记事本");
final JTextField fontText=new JTextField(9);
fontText.setPreferredSize(new Dimension(200,20));
final JTextField styleText=new JTextField(8);
styleText.setPreferredSize(new Dimension(200,20));
final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};
final JTextField sizeText=new JTextField(5);
sizeText.setPreferredSize(new Dimension(200,20));
JButton okButton=new JButton("确定");
JButton cancel=new JButton("取消");
cancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fontDialog.dispose();
}
});
Font currentFont=area.getFont();
fontText.setText(currentFont.getFontName());
fontText.selectAll();
if(currentFont.getStyle()==Font.PLAIN){
styleText.setText("常规");
}
else if(currentFont.getStyle()==Font.BOLD){
styleText.setText("粗体");
}
else if(currentFont.getStyle()==Font.ITALIC){
styleText.setText("斜体");
}
else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
styleText.setText("粗斜体");
}
styleText.selectAll();
String str=String.valueOf(currentFont.getSize());
sizeText.setText(str);
sizeText.selectAll();
final JList fontList,styleList,sizeList;
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
final String fontName[]=ge.getAvailableFontFamilyNames();
fontList=new JList(fontName);
fontList.setFixedCellWidth(86);
fontList.setFixedCellHeight(20);
fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
final String fontStyle[]={"常规","粗体","斜体","粗斜体"};
styleList=new JList(fontStyle);
styleList.setFixedCellWidth(86);
styleList.setFixedCellHeight(20);
styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
if(currentFont.getStyle()==Font.PLAIN){
styleList.setSelectedIndex(0);
}
else if(currentFont.getStyle()==Font.BOLD){
styleList.setSelectedIndex(1);
}
else if(currentFont.getStyle()==Font.ITALIC){
styleList.setSelectedIndex(2);
}
else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
styleList.setSelectedIndex(3);
}
final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
sizeList=new JList(fontSize);
sizeList.setFixedCellWidth(43);
sizeList.setFixedCellHeight(20);
sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fontList.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event){
fontText.setText(fontName[fontList.getSelectedIndex()]);
fontText.selectAll();
Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont1);
}
});
styleList.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event){
int s=style[styleList.getSelectedIndex()];
styleText.setText(fontStyle[s]);
styleText.selectAll();
Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont2);
}
});
sizeList.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event){
sizeText.setText(fontSize[sizeList.getSelectedIndex()]);
//sizeText.requestFocus();
sizeText.selectAll();
Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
sample.setFont(sampleFont3);
}
});
okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
area.setFont(okFont);
fontDialog.dispose();
}
});
JPanel samplePanel=new JPanel();
samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));
samplePanel.add(sample);
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
JPanel panel3=new JPanel();
panel2.add(fontText);
panel2.add(styleText);
panel2.add(sizeText);
panel2.add(okButton);
panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图
panel3.add(new JScrollPane(styleList));
panel3.add(new JScrollPane(sizeList));
panel3.add(cancel);
con.add(panel1);
con.add(panel2);
con.add(panel3);
con.add(samplePanel);
fontDialog.setSize(350,340);
fontDialog.setLocation(200,200);
fontDialog.setResizable(false);
fontDialog.setVisible(true);
}
public void insertUpdate(DocumentEvent e) {
repealitem.setEnabled(true);
prepealitem.setEnabled(true);
}
public void removeUpdate(DocumentEvent e) {
repealitem.setEnabled(true);
prepealitem.setEnabled(true);
}
public void changedUpdate(DocumentEvent e) {
repealitem.setEnabled(true);
prepealitem.setEnabled(true);
}
}
运行截图