📄 appframe.java~2~
字号:
/**
* AppFrame.java
*
* Created on August 31,2008, 15:13
*
* 这是整个PaintChat的主类,其中包含了对界面的初始化,
* 对按钮的监听和简单的保存读取功能。
*/
package draw;
import javax.swing.*;
import java.awt.image.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
/**
* @author 王宽
*
*/
public class AppFrame extends JFrame{
/**
* Swing组件变量
* 用来建立一个交互窗口
* 以下都是一些变量的声明
*/
private JPanel ctrlPanel; //控制栏
private JPanel toolsPanel; //工具栏
private JPanel colorPanel; //颜色栏
private JPanel sizePanel; //大小栏
private JPanel mediumPanel1;
private JPanel mediumPanel2; //中介容器
private ButtonGroup toolsGroup;
private JToggleButton lineButton,pencilButton;
private JToggleButton rectButton,roundRectButton;
private JToggleButton ovalButton,polygonButton,letterButton,selectButton;
private JButton clearButton; //控制按钮
private JButton fgButton,bgButton,fmButton; //颜色按钮
private JComboBox weightCombo,fontCombo,sizeCombo,styleCombo,imageCombo,numCombo,operateCombo; //下拉框选单
private JMenuBar menubar;
private JMenuItem save,load,newItem,exit,help,about,export,chat,runClient;
private JMenu menu1,menu2,menu3; //菜单栏
private draw.DrawingBoard board; //自定义画板类
private JFileChooser filechooser,filechooser2; //文件选择器
private Color fmcolor;
private String ip;
private javax.swing.filechooser.FileFilter drawFilter = new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
if (f.isDirectory())
return true;
if (f.getName().endsWith(".superstar"))
return true;
return false;
}
public String getDescription() {
return "java画图板文件 (*.superstar)";
}
}; //保存的文件选择器
private javax.swing.filechooser.FileFilter pngFilter = new javax.swing.filechooser.FileFilter() {
public boolean accept(java.io.File f) {
if (f.isDirectory())
return true;
if (f.getName().endsWith(".png"))
return true;
return false;
}
public String getDescription() {
return "PNG image file (*.png)";
}
}; //导出的文件选择器
/**
* 构造函数
* 调用私有的初始化函数
* 构造一个与用户交互的界面
*/
public AppFrame(){ //构造函数
initComponents();
}
/**
* 初始化函数
* 设为私有
* 主函数的基本功能都由这个实现
*/
private void initComponents(){ //开始初始化函数
ctrlPanel = new JPanel();
toolsPanel = new JPanel();
colorPanel = new JPanel();
sizePanel = new JPanel();
mediumPanel1 = new JPanel();
mediumPanel2 = new JPanel();
toolsGroup = new ButtonGroup();
lineButton = new JToggleButton();
pencilButton = new JToggleButton();
rectButton = new JToggleButton();
roundRectButton = new JToggleButton();
ovalButton = new JToggleButton();
polygonButton = new JToggleButton();
letterButton = new JToggleButton();
clearButton = new JButton();
selectButton = new JToggleButton();
fgButton = new JButton();
bgButton = new JButton();
fmButton = new JButton();
weightCombo = new JComboBox();
fontCombo = new JComboBox();
sizeCombo = new JComboBox();
styleCombo = new JComboBox();
imageCombo = new JComboBox();
numCombo = new JComboBox();
operateCombo = new JComboBox();
board = new draw.DrawingBoard();
board.setOpaque(true);
board.setBackground(Color.white); //初始化
this.setTitle("Paint"); //设置标题
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //关闭后自动退出
this.setLayout(new BorderLayout());
ctrlPanel.setLayout(new BoxLayout(ctrlPanel,BoxLayout.Y_AXIS)); //初始化控制栏
toolsPanel.setBorder(new TitledBorder("Drawing Tools")); //初始化工具栏
mediumPanel1.setLayout(new GridLayout(5, 2, 5, 5)); //初始化中介1
toolsGroup.add(selectButton); //按钮初始化
selectButton.setFont(new Font("Dialog", 0, 10));
selectButton.setSelected(true);
selectButton.setText("Select");
selectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
selectButtonActionPerformed(evt);
}
});
mediumPanel1.add(selectButton);
toolsGroup.add(lineButton);
lineButton.setFont(new Font("Dialog", 0, 10));
lineButton.setSelected(true);
lineButton.setText("Line");
lineButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
lineButtonActionPerformed(evt);
}
});
mediumPanel1.add(lineButton);
toolsGroup.add(pencilButton);
pencilButton.setFont(new Font("Dialog", 0, 10));
pencilButton.setSelected(false);
pencilButton.setText("Pencil");
pencilButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
pencilButtonActionPerformed(evt);
}
});
mediumPanel1.add(pencilButton);
toolsGroup.add(rectButton);
rectButton.setFont(new Font("Dialog", 0, 10));
rectButton.setSelected(false);
rectButton.setText("Rect");
rectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
rectButtonActionPerformed(evt);
}
});
mediumPanel1.add(rectButton);
toolsGroup.add(roundRectButton);
roundRectButton.setFont(new Font("Dialog", 0, 10));
roundRectButton.setSelected(false);
roundRectButton.setText("RectRound");
roundRectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
roundRectButtonActionPerformed(evt);
}
});
mediumPanel1.add(roundRectButton);
toolsGroup.add(ovalButton);
ovalButton.setFont(new Font("Dialog", 0, 10));
ovalButton.setSelected(false);
ovalButton.setText("Oval");
ovalButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ovalButtonActionPerformed(evt);
}
});
mediumPanel1.add(ovalButton);
toolsGroup.add(polygonButton);
polygonButton.setFont(new Font("Dialog", 0, 10));
polygonButton.setSelected(false);
polygonButton.setText("Polygon");
polygonButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
polygonButtonActionPerformed(evt);
}
});
mediumPanel1.add(polygonButton);
toolsGroup.add(letterButton);
letterButton.setFont(new Font("Dialog", 0, 10));
letterButton.setSelected(false);
letterButton.setText("Letter");
letterButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
letterButtonActionPerformed(evt);
}
});
mediumPanel1.add(letterButton);
clearButton.setFont(new Font("Dialog", 0, 10));
clearButton.setSelected(false);
clearButton.setText("Clear");
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
clearButtonActionPerformed(evt);
}
});
mediumPanel1.add(clearButton);
//初始化按钮结束
toolsPanel.add(mediumPanel1); //初始化中介1结束
ctrlPanel.add(toolsPanel); //初始化工具栏结束
colorPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 10)); //初始化颜色栏
colorPanel.setBorder(new TitledBorder("Color Settings"));
fgButton.setBackground(board.getForeground()); //初始化按钮
fgButton.setToolTipText("Change Drawing Color");
fgButton.setBorder(new LineBorder(new Color(0, 0, 0)));
fgButton.setPreferredSize(new Dimension(50, 50));
fgButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
fgButtonActionPerformed(evt);
}
});
colorPanel.add(fgButton);
bgButton.setBackground(board.getBackground());
bgButton.setToolTipText("Change Board Background Color");
bgButton.setBorder(new LineBorder(new Color(0, 0, 0)));
bgButton.setPreferredSize(new java.awt.Dimension(50, 50));
bgButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
bgButtonActionPerformed(evt);
}
});
colorPanel.add(bgButton);
fmButton.setBackground(fmcolor);
fmButton.setToolTipText("Change Frame Color");
fmButton.setBorder(new LineBorder(new Color(0, 0, 0)));
fmButton.setPreferredSize(new java.awt.Dimension(50, 50));
fmButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
fmButtonActionPerformed(evt);
}
}); ////初始化按钮结束
colorPanel.add(fmButton);
ctrlPanel.add(colorPanel); //初始化颜色栏结束
sizePanel.setBorder(new TitledBorder("Setttings")); //初始化设置栏
mediumPanel2.setLayout(new GridLayout(0, 1, 10, 10)); //初始化中介2
weightCombo.setFont(new Font("Dialog", 0, 10)); //初始化下拉框
weightCombo.setModel(new DefaultComboBoxModel(new String[] { "Stroke Weight 1.0px", "Stroke Weight 2.0px", "Stroke Weight 5.0px", "Stroke Weight 7.5px", "Stroke Weight 10.0px" }));
weightCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
weightComboActionPerformed(evt);
}
});
mediumPanel2.add(weightCombo);
fontCombo.setFont(new Font("Dialog", 0, 10));
String f[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
fontCombo.setModel(new DefaultComboBoxModel(f));
fontCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
fontComboActionPerformed(evt);
}
});
mediumPanel2.add(fontCombo);
sizeCombo.setFont(new Font("Dialog", 0, 10));
sizeCombo.setModel(new DefaultComboBoxModel(new String[] {"Letter Size 10","Letter Size 20","Letter Size 30","Letter Size 40","Letter Size 50","Letter Size 60","Letter Size 70","Letter Size 80","Letter Size 90","Letter Size 100"}));
sizeCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
sizeComboActionPerformed(evt);
}
});
mediumPanel2.add(sizeCombo);
styleCombo.setFont(new Font("Dialog", 0, 10));
styleCombo.setModel(new DefaultComboBoxModel(new String[] { "BOLD", "ITALIC", "PLAIN"}));
styleCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
styleComboActionPerformed(evt);
}
});
mediumPanel2.add(styleCombo);
imageCombo.setFont(new Font("Dialog", 0, 10));
imageCombo.setModel(new DefaultComboBoxModel(new String[] { "Frame", "Fill", "Frame and Fill"}));
imageCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
imageComboActionPerformed(evt);
}
});
mediumPanel2.add(imageCombo);
numCombo.setFont(new Font("Dialog", 0, 10));
numCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
numComboActionPerformed(evt);
}
});
numCombo.setEnabled(true);
mediumPanel2.add(numCombo);
operateCombo.setFont(new Font("Dialog", 0, 10));
operateCombo.setModel(new DefaultComboBoxModel(new String[] { "Translate", "Rorate", "Scale", "Shear"}));
operateCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
operateComboActionPerformed(evt);
}
});
operateCombo.setEnabled(true);
mediumPanel2.add(operateCombo);
sizePanel.add(mediumPanel2); //中介2初始化结束
ctrlPanel.add(sizePanel); //设置栏初始化结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -