📄 swingwindow.java
字号:
else if(actionCommand.equals("铅笔")){
l=0;
}
else if(actionCommand.equals("橡皮")){
l=1;
}
else if(actionCommand.equals("圆")){
l=2;
}
else if(actionCommand.equals("方")){
l=3;
}
else if(actionCommand.equals("实心圆")){
l=4;
}
else if(actionCommand.equals("实心方")){
l=5;
}
else if(actionCommand.equals("直线")){
l=6;
}
else if(actionCommand.equals("清空")){
ef.clear();
cc.clear();
tf.clear();
mm=0;
qp=0;
i=0;
repaint();
}
else if(actionCommand.equals("打开")){
open.setVisible(true);
if(open.getFile()!=null)
{
try{
ef.clear();
cc.clear();
tf.clear();
File filein = new File(open.getDirectory(),open.getFile());
picIn = new FileInputStream(filein);
VIn = new ObjectInputStream(picIn);
tf = (ArrayList<Shape>)VIn.readObject();
cc = (ArrayList<Color>)VIn.readObject();
ef = (ArrayList<Integer>)VIn.readObject();
VIn.close();
i=tf.size();
qp=ef.size();
mm=cc.size();
repaint();
}
catch(ClassNotFoundException IOe2)
{
System.out.println("can not read object");
}
catch(IOException IOe)
{
System.out.println("can not read file");
}
}
}
else if(actionCommand.equals("保 存")){
save.setVisible(true);
try{
File fileout = new File(save.getDirectory(),save.getFile());
picOut = new FileOutputStream(fileout);
VOut = new ObjectOutputStream(picOut);
VOut.writeObject(tf);
VOut.writeObject(cc);
VOut.writeObject(ef);
VOut.close();
}
catch(IOException IOe)
{
System.out.println("can not write object");
}
}
}
private class NewPanel
extends JPanel{
private Color owncolor;
public NewPanel(){
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
color=owncolor;
}
});
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
public void background(Color b){
owncolor=b;
setBackground(b);
}
}
private class LTJL{
private PrintWriter outputStream=null;
public LTJL(){
String date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
try{
outputStream=
new PrintWriter(new FileOutputStream("聊天记录"+date));
}
catch(FileNotFoundException e){
System.out.println("Error!can not save!");
// System.exit(0);
}
}
public void save(String l){
outputStream.println(l);
outputStream.close();
}
}
//huantuban
private class HuaTuPanel extends JPanel {
public HuaTuPanel(){
ef=new ArrayList<Integer>();
tf=new ArrayList<Shape>();
cc=new ArrayList<Color>();
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g);
for (int i=0;i<tf.size();i++){
Shape s=(Shape)tf.get(i);
g2.setPaint(cc.get(i));
Integer v=ef.get(i);
if(v.intValue()==0){
g2.draw(s);
}
else if(v.intValue()==1){
g2.fill(s);
}
else{
BasicStroke size = new BasicStroke(11,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g2.setStroke(size);
g2.draw(s);
size = new BasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g2.setStroke(size);
}
}
}
}
private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent e){
st=e.getPoint();
}
public void mouseReleased(MouseEvent e){
en=e.getPoint();
switch(l){
case 2:
double a=en.getX();double b=en.getY();
double c=st.getX();double d=st.getY();
double m=Math.min(a,c);double n=Math.min(b,d);
Ellipse2D r=new Ellipse2D.Double(m,n,Math.abs(c-a),Math.abs(d-b));
tf.set(i,r);
i++;
repaint();
flag=true;
break;
case 3:
double a1=en.getX();double b1=en.getY();
double c1=st.getX();double d1=st.getY();
double m1=Math.min(a1,c1);double n1=Math.min(b1,d1);
Rectangle2D ell=new Rectangle2D.Double(m1,n1,Math.abs(c1-a1),Math.abs(d1-b1));
tf.set(i,ell);
i++;
repaint();
flag1=true;
break;
case 4:
double a2=en.getX();double b2=en.getY();
double c2=st.getX();double d2=st.getY();
double m2=Math.min(a2,c2);double n2=Math.min(b2,d2);
Ellipse2D rr=new Ellipse2D.Double(m2,n2,Math.abs(c2-a2),Math.abs(d2-b2));
tf.set(i,rr);
i++;
repaint();
flag2=true;
break;
case 5:
double a3=en.getX();double b3=en.getY();
double c3=st.getX();double d3=st.getY();
double m3=Math.min(a3,c3);double n3=Math.min(b3,d3);
Rectangle2D rre=new Rectangle2D.Double(m3,n3,Math.abs(c3-a3),Math.abs(d3-b3));
tf.set(i,rre);
i++;
repaint();
flag3=true;
break;
case 6:
Line2D lll=new Line2D.Double(st,en);
tf.set(i,lll);
i++;
repaint();
flag4=true;
break;
}
}
}
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent e){
}
public void mouseDragged(MouseEvent e){
switch (l){
case 0:
ef.add(new Integer(0));
qp++;
Line2D li=new Line2D.Double(st,e.getPoint());
tf.add(li);
i++;
cc.add(color);
mm++;
repaint();
st=e.getPoint();
break;
case 1:
ef.add(new Integer(2));
qp++;
Line2D el=new Line2D.Double(st,e.getPoint());
tf.add(el);
i++;
cc.add(Color.WHITE);
mm++;
repaint();
st=e.getPoint();
break;
case 2:
Point2D end=e.getPoint();
double a=end.getX();double b=end.getY();
double c=st.getX();double d=st.getY();
double m=Math.min(a,c);double n=Math.min(b,d);
Ellipse2D r=new Ellipse2D.Double(m,n,Math.abs(c-a),Math.abs(d-b));
if(flag){
tf.add(r);
cc.add(color);mm++;
ef.add(new Integer(0));
qp++;
flag=false;
}
else
tf.set(i,r);
repaint();
break;
case 3:
Point2D nd=e.getPoint();
double a1=nd.getX();double b1=nd.getY();
double c1=st.getX();double d1=st.getY();
double m1=Math.min(a1,c1);double n1=Math.min(b1,d1);
Rectangle2D ell=new Rectangle2D.Double(m1,n1,Math.abs(c1-a1),Math.abs(d1-b1));
if(flag1){
tf.add(ell);
cc.add(color);mm++;
ef.add(new Integer(0));
qp++;
flag1=false;
}
else
tf.set(i,ell);
repaint();
break;
case 4:
Point2D ed=e.getPoint();
double a2=ed.getX();double b2=ed.getY();
double c2=st.getX();double d2=st.getY();
double m2=Math.min(a2,c2);double n2=Math.min(b2,d2);
Ellipse2D rr=new Ellipse2D.Double(m2,n2,Math.abs(c2-a2),Math.abs(d2-b2));
if(flag2){
tf.add(rr);
cc.add(color);mm++;
ef.add(new Integer(1));
qp++;
flag2=false;
}
else
tf.set(i,rr);
repaint();
break;
case 5:
Point2D ee=e.getPoint();
double a3=ee.getX();double b3=ee.getY();
double c3=st.getX();double d3=st.getY();
double m3=Math.min(a3,c3);double n3=Math.min(b3,d3);
Rectangle2D rre=new Rectangle2D.Double(m3,n3,Math.abs(c3-a3),Math.abs(d3-b3));
if(flag3){
tf.add(rre);
cc.add(color);mm++;
ef.add(new Integer(1));
qp++;
flag3=false;
}
else
tf.set(i,rre);
repaint();
break;
case 6:
Point2D llp=e.getPoint();
Line2D ll=new Line2D.Double(st,llp);
if(flag4){
tf.add(ll);
cc.add(color);mm++;
ef.add(new Integer(0));
qp++;
flag4=false;
}
else
tf.set(i,ll);
repaint();
break;
}
}
}
private class ConfirmWindow extends JFrame implements ActionListener
{
public static final int WIDTH = 200;
public static final int HEIGHT = 100;
public ConfirmWindow( )
{
setSize(WIDTH, HEIGHT);
Container confirmContent = getContentPane( );
confirmContent.setBackground(Color.WHITE);
confirmContent.setLayout(new BorderLayout( ));
JLabel msgLabel = new JLabel(" 确定要退出?");
confirmContent.add(msgLabel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel( );
buttonPanel.setLayout(new FlowLayout( ));
JButton exitButton = new JButton("是");
exitButton.addActionListener(this);
buttonPanel.add(exitButton);
JButton cancelButton = new JButton("否");
cancelButton.addActionListener(this);
buttonPanel.add(cancelButton);
confirmContent.add(buttonPanel, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand( ).equals("是")) {
System.exit(0);
}
else if (e.getActionCommand( ).equals("否"))
dispose();
else
System.out.println("Error in Confirm Window.");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -