📄 mypaint.java
字号:
}
public void focusLost(FocusEvent e2)
{
}
}
);
// 在drawPanel加上滚动条,总显示滚动条
scrollpanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollpanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollpanel.setVerifyInputWhenFocusTarget( true );
scrollpanel.getViewport().add( drawPanel );
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.anchor = GridBagConstraints.NORTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new Insets(10, 5, 5, 5);
ctrlPanel.add( mediumPanel1, gridBagConstraints );
//在底部显示日期
copyleft.setFont( new Font( "Verdana", 0, 15 ) );
copyleft.setForeground( new Color( 255, 153, 0 ) );
copyleft.setText( "2007-6-17" );
//界面的排放
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = GridBagConstraints.SOUTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new Insets(5, 5, 15, 5);
ctrlPanel.add( copyleft, gridBagConstraints );
getContentPane().add( menuBar, BorderLayout.NORTH );
getContentPane().add( ctrlPanel, BorderLayout.WEST );
getContentPane().add( scrollpanel, BorderLayout.CENTER );
getContentPane().add( state, BorderLayout.SOUTH );
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds( ( screenSize.width - 786 ) / 2, ( screenSize.height - 578 ) / 2, 786, 680 );
setVisible( true );
}//GEN-END:initComponents
/**
* 前景色
* @param evt
*/
private void foregroundItemActionPerformed( ActionEvent evt )
{
Color color = JColorChooser.showDialog( this, "Change Drawing Color",drawPanel.getForeground() );
if( color != null )
drawPanel.setForeground( color );
}
/**
* 背景色
* @param evt
*/
private void backgroundItemActionPerformed( ActionEvent evt )
{
Color color = JColorChooser.showDialog( this, "Change Drawing Color",drawPanel.getBackground() );
if( color != null )
drawPanel.setBackground( color );
}
/**
* 清除
* @param evt
*/
private void clearItemActionPerformed( ActionEvent evt )
{
drawPanel.clearBoard();
}
/**
* 作者:钟雯
* 实现文字格式,大小,类型的选择功能
* 初始时间:2007 5-20
* 最后一次修改时间:2007 6-13
*/
/**
*
* 文字的字体类型处理
*
*/
private class CheckBoxHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==bold)
if(e.getStateChange()==ItemEvent.SELECTED)
x1=Font.BOLD;
else
x1=Font.PLAIN;
if(e.getSource()==italic)
if(e.getStateChange()==ItemEvent.SELECTED)
x2=Font.ITALIC;
else
x2=Font.PLAIN;
drawPanel.setStyle2( x1, x2 );
}
}
/**
* 关于对话框
* @param e
*/
void jmAbout_actionPerformed(ActionEvent e) {
new DialogAbout( this, drawimage, "DrawPane \n作者:\t学号\n钟雯\t391\n王珍\t438\n曾燕秋\t488"
).show();
}
/**
* 作者:钟雯
* 实现文件的新建功能
* 初始时间:2007 5-20
* 最后一次修改时间:2007 6-13
*/
/**
* 新建
* @param evt
*/
private void newButtonActionPerformed( ActionEvent evt)
{
//若画板上有图形,判断是否要保存
int select = JOptionPane.showOptionDialog(this, "是否保存当前文件?", "",
JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
//若想保存则调用保存事件的方法
if( select ==0 )
saveButtonActionPerformed(evt);
//若不想,则清除图象
else if( select ==3 )
return ;
clearItemActionPerformed( evt );
}
/**
* 作者:钟雯 曾燕秋
* 实现文件的打开和存储
* 初始时间:2007 5-20
* 最后一次修改时间:2007 6-13
*/
/**
* 打开
* @param evt
*/
private void loadButtonActionPerformed( ActionEvent evt) {
//若图板不是空的则判断是否要保存
if (!drawPanel.isEmpty()) {
int select = JOptionPane.showOptionDialog(this, "是否保存当前文件?", "",
JOptionPane.
YES_NO_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE, null, null, null);
//回答若肯定,则调用保存事件的方法
if (select == 0) {
saveButtonActionPerformed( evt) ;
}
//若否定则覆盖原来的图形
else if (select == 2) {
return;
}
}
try {
if (filechooser1 == null) {
filechooser1 = new JFileChooser();
filechooser1.setFileFilter(myFilter);
filechooser1.setMultiSelectionEnabled(true);
filechooser1.setAcceptAllFileFilterUsed(true);
filechooser1.setFileFilter( jpgFilter );
}
int result = filechooser1.showOpenDialog(this);
String temp;
if (result != JFileChooser.APPROVE_OPTION)
return;
File file = filechooser1.getSelectedFile();
//打开的图形为自定义的格式
if( file.getName().toLowerCase().endsWith( ".zzw" ))
{
BufferedReader bcc = new BufferedReader(new FileReader(filechooser1.getSelectedFile()));
int color = Integer.parseInt(bcc.readLine());
Color frontColor = new Color(color);
drawPanel.setForeground(frontColor);
color = Integer.parseInt(bcc.readLine());
Color backColor = new Color(color);
drawPanel.setBackground(backColor);
weightcombo.setSelectedIndex(Integer.parseInt(bcc.readLine()));
erasercombo.setSelectedIndex(Integer.parseInt(bcc.readLine()));
ArrayList list = new ArrayList();
while ((temp = bcc.readLine()) != null)
list.add(temp);
drawPanel.setShapes(list);
}
//打开的图形为其他格式
else
{
MediaTracker mt = new MediaTracker(this);
Image img = Toolkit.getDefaultToolkit().createImage(filechooser1.
getSelectedFile().getAbsolutePath());
mt.addImage(img, 0);
try {
mt.waitForAll();
}
catch (Exception ex) {
ex.printStackTrace();
}
CusImage aCusShape = new CusImage(img, 40, 40 );
drawPanel.addShape(aCusShape);
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(this, e, "Error occur!", JOptionPane.ERROR_MESSAGE);
}
}
/**
* 保存图片
* @param evt
*/
private void saveButtonActionPerformed(ActionEvent evt) {
try {
//若为定义图片的格式,则默认为自定义的格式
if (filechooser1 == null) {
filechooser1 = new JFileChooser();
filechooser1.setFileFilter( jpgFilter );
filechooser1.setFileFilter(myFilter);
filechooser1.setMultiSelectionEnabled(false);
filechooser1.setAcceptAllFileFilterUsed(false);
}
//显示打开对话框
int result = filechooser1.showSaveDialog(this);
if (result != JFileChooser.APPROVE_OPTION)
return;
File file = filechooser1.getSelectedFile();
if (!file.getName().toLowerCase().endsWith(".zzw")) {
file = new File(file.getAbsolutePath() + ".zzw");
}
Color frontColor = drawPanel.getForeground();
Color backColor = drawPanel.getBackground();
PrintWriter acc = new PrintWriter(new FileWriter(file));
//保存前景色
acc.println(frontColor.getRGB());
//保存背景色
acc.println(backColor.getRGB());
//保存各个工具的宽度
acc.println(weightcombo.getSelectedIndex());
//保存橡皮擦的宽度
acc.print(erasercombo.getSelectedIndex());
//保存图片的相关数据
acc.print(drawPanel.getShapes());
acc.close();
}
catch (Exception ioe) {
JOptionPane.showMessageDialog(this, ioe, "Error occur!", JOptionPane.ERROR_MESSAGE);
}
}
/**
* 导出为PNG格式
* @param evt
*/
private void emportButtonAciontPerformed(ActionEvent evt)
{
try {
if (filechooser2 == null) {
filechooser2 = new JFileChooser();
filechooser2.setFileFilter(secondFilter);
filechooser2.setMultiSelectionEnabled(false);
filechooser2.setAcceptAllFileFilterUsed(false);
}
int result = filechooser2.showSaveDialog(this);
if (result != JFileChooser.APPROVE_OPTION)
return;
File file = filechooser2.getSelectedFile();
if (!file.getName().toLowerCase().endsWith(".png")) {
file = new File(file.getAbsolutePath() + ".png");
}
Dimension d = drawPanel.getSize();
BufferedImage image = new BufferedImage(d.width, d.height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
drawPanel.paint(g);
g.dispose();
ImageIO.write(image, "png", file);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, e, "Error occur!", JOptionPane.ERROR_MESSAGE);
}
}
/**
* mian函数
* @param args
*/
public static void main(String args[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new MyPaint();
}
}
/**
* 关于对话框
*
*/
class MyPaint_AboutItem_actionAdapter implements java.awt.event.ActionListener {
MyPaint adaptee;
MyPaint_AboutItem_actionAdapter(MyPaint adaptee)
{
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e)
{
adaptee.jmAbout_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -