⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicspanel.java

📁 在java下实现的绘图程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.JComponent.*;
import java.io.File;
import java.awt.*;
import java.awt.Frame.*;
import java.awt.Font.*;
import java.awt.Graphics.*;
import java.awt.Graphics2D.*;
import java.awt.Color.*;
import java.awt.BasicStroke.*;
import java.awt.event.*;
import java.util.*;
import java.lang.Math.*;
import java.awt.AWTException;
import java.awt.image.*;
import java.lang.Exception.*;
import java.io.*;
import javax.imageio.*;
import javax.imageio.stream.*;

public class GraphicsPanel
{
  public int Bgt[][]=new int[1000000][8];
  public Color colorChoice[]=new Color[1000000];
  public int Graphicsnum=0;
  public JFrame aFrame;
  public int toolState=4;
  public int polyPoint[][]=new int[500][2];
  public int Pointnum=0;
  public int Textnum=0;
  public int lineStyle=1;
  public int paintStyle=1;
  public int brushStyle=1;
  
  public int newState=0;
  public String fileName="未命名";
  public String filePaths="";
  public Color preColor=Color.black;
  public Color backColor=Color.white;
  
  public DrawRectPanel aPanel;
  public JPanel colorPanel;
  public JPanel statePanel;
  public DummyPanel dummyPanel;
  public JPanel leftPanel;
  
  public JColorChooser aColorChooser;
  
  
  public JTextField helpText;
  public JTextField pointText;
  public JTextField rightText;
  public ToolPanel toolPanel;
  public JPanel toolPanel1;
  public JMenuBar aMenuBar;
  public JMenu fileMenu,editMenu,helpMenu,viewMenu,colorMenu,ImageMenu;
  public JMenuItem openMenuItem,saveMenuItem,saveAsMenuItem,newMenuItem;
  public JMenuItem colorMenuItem;
  public JMenuItem iColorMenuItem;
  //copyMenuItem,cutMenuItem;
          
  
  public  JButton colorButton;
  
  public RectButton rectButton;
  public CycleButton cycleButton;
  public LineButton lineButton; 
  public ArcButton arcButton; 
  public PolyButton polyButton; 
  public FillButton fillButton; 
  public EraserButton eraserButton; 
  public PenButton penButton; 
  public BrushButton brushButton; 
  public LargeButton largeButton; 
  public getButton getButton; 
  
  public JTextArea aTextField;    
  public JFileChooser aFileChooser,bFileChooser;      

  public  ActionListener rectListener,cycleListener,lineListener,arcListener,polyListener,fillListener,eraserListener,penListener,brushListener,colorListener,largeListener,getListener,saveListener;
      
  
 public Color oldColor; 
  public GraphicsPanel()
  {
  	
  	aFrame=new JFrame();
  	aTextField=new JTextArea();
  	aFrame.setTitle(fileName+"-画图");
  
  	aColorChooser=new JColorChooser();
  	aFileChooser=new JFileChooser();
  	bFileChooser=new JFileChooser();
  	
  	//UIManager.put("bFileChooser.newFolderIcon","mspaint.gif");
    
  	colorPanel=new JPanel();
  	aPanel=new DrawRectPanel();	
  	toolPanel=new ToolPanel();
  	leftPanel=new JPanel();
  	aMenuBar=new JMenuBar();
   
    toolPanel1=new JPanel();
    statePanel=new JPanel();  
    dummyPanel=new DummyPanel();
    fileMenu=new JMenu("文件(F)");
    fileMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	editMenu=new  JMenu("编辑(E)");
  	editMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	viewMenu=new JMenu("查看(V)");
  	viewMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	ImageMenu=new JMenu("图像(I)");
  	ImageMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	colorMenu=new JMenu("颜色(C)");
  	colorMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	helpMenu=new JMenu("帮助(H)");
  	helpMenu.setFont(new Font("menuFont",Font.PLAIN,12));
  	newMenuItem=new JMenuItem("新建(N)");
  	newMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	openMenuItem=new JMenuItem("打开(O)");
  	openMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	saveMenuItem=new JMenuItem("保存(S)");
  	saveMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	saveAsMenuItem=new JMenuItem("另存为(A)");
  	saveAsMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	colorMenuItem=new JMenuItem("编辑颜色(E)...");
  	colorMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	iColorMenuItem=new JMenuItem("反色(I)");
  	iColorMenuItem.setFont(new Font("menuFont",Font.PLAIN,12));
  	//cutMenuItem=new JMenuItem("剪切");
  	//copyMenuItem=new JMenuItem("复制");
  	
    
   
    helpText=new JTextField();
    helpText.setPreferredSize(new Dimension(250,20));
    helpText.setEditable(false);
    helpText.setBorder(BorderFactory.createLoweredBevelBorder());
   
    pointText=new JTextField();
    pointText.setEditable(false);
    pointText.setBorder(BorderFactory.createLoweredBevelBorder());
    
    rightText=new JTextField();
    rightText.setPreferredSize(new Dimension(60,20));
    rightText.setEditable(false);
    rightText.setBorder(BorderFactory.createLoweredBevelBorder());
    
    rectButton=new RectButton();
  	rectButton.setIcon(new ImageIcon("rect.gif"));
    
    cycleButton=new CycleButton();
    cycleButton.setIcon(new ImageIcon("cycle.gif"));
    
    lineButton=new LineButton();
    lineButton.setIcon(new ImageIcon("line.gif"));
    
  	arcButton=new ArcButton();
  	arcButton.setIcon(new ImageIcon("arc.gif"));
  
  	polyButton=new PolyButton();
  	polyButton.setIcon(new ImageIcon("poly.gif"));
  
    fillButton=new FillButton();
    fillButton.setIcon(new ImageIcon("fill.gif"));
   
    eraserButton=new EraserButton();
    eraserButton.setIcon(new ImageIcon("eraser.gif"));
    
    penButton=new PenButton();
    penButton.setIcon(new ImageIcon("pencil.gif"));
    
    brushButton=new BrushButton();
    brushButton.setIcon(new ImageIcon("brush.gif"));
    
    colorButton=new JButton();
    colorButton.setBackground(preColor);
    colorButton.setPreferredSize(new Dimension(20,20));
    
    
   
    largeButton=new LargeButton();
    largeButton.setIcon(new ImageIcon("glass.gif"));
  
    getButton=new getButton();
    getButton.setIcon(new ImageIcon("get.gif"));
    
   
      
        
    lineListener=new LineListener();
    arcListener=new ArcListener();
    polyListener=new PolyListener();
    cycleListener=new CycleListener();
    rectListener=new RectListener();
    fillListener=new FillListener();
    penListener=new PenListener();
    eraserListener=new EraserListener();
    brushListener=new BrushListener();   
    colorListener=new ColorListener();
    largeListener=new LargeListener();
    getListener=new GetListener();
    saveListener=new SaveListener();
    
    
    					
  	lineButton.addActionListener(lineListener);
  	arcButton.addActionListener(arcListener);
  	fillButton.addActionListener(fillListener);
  	polyButton.addActionListener(polyListener);
  	cycleButton.addActionListener(cycleListener);
  	rectButton.addActionListener(rectListener);
  	penButton.addActionListener(penListener);
    brushButton.addActionListener(brushListener);
    eraserButton.addActionListener(eraserListener);
    colorButton.addActionListener(colorListener);
  	largeButton.addActionListener(largeListener);
  	getButton.addActionListener(getListener);
  	
  	
  	
  	fileMenu.setMnemonic('F');  
  	editMenu.setMnemonic('E');
  	
  	openMenuItem.setAccelerator(KeyStroke.getKeyStroke(
  	    KeyEvent.VK_O,InputEvent.CTRL_MASK,false));
  	    
  	saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(
  	    KeyEvent.VK_S,InputEvent.CTRL_MASK,false));
  	    
  	newMenuItem.setAccelerator(KeyStroke.getKeyStroke(
      KeyEvent.VK_N,InputEvent.CTRL_MASK,false));
        
  	iColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(
      KeyEvent.VK_I,InputEvent.CTRL_MASK,false));
  	 
  	openMenuItem.addActionListener(new OpenListener());
  	newMenuItem.addActionListener(new NewListener());
  	saveMenuItem.addActionListener(saveListener);
  	saveAsMenuItem.addActionListener(new SaveAsListener());
  	iColorMenuItem.addActionListener(new IColorListener());
  	colorMenuItem.addActionListener(colorListener);    
  	rectButton.setToolTipText("矩形");
  	cycleButton.setToolTipText("椭圆");
  	lineButton.setToolTipText("直线");
  	arcButton.setToolTipText("曲线");
  	penButton.setToolTipText("铅笔");
  	brushButton.setToolTipText("刷子");
  	eraserButton.setToolTipText("橡皮");
  	fillButton.setToolTipText("填充");
  	largeButton.setToolTipText("放大");
  	getButton.setToolTipText("取色");
  	colorButton.setToolTipText("颜色");
  
    
    dummyPanel.setBorder(BorderFactory.createLoweredBevelBorder());   
    
    colorPanel.setBorder(BorderFactory.createCompoundBorder(
   	BorderFactory.createCompoundBorder(
    BorderFactory.createLineBorder(Color.gray,0),
   	BorderFactory.createRaisedBevelBorder()),
   	BorderFactory.createCompoundBorder(
   	BorderFactory.createEmptyBorder(2,2,2,2),
    BorderFactory.createLoweredBevelBorder())));
    
    
    toolPanel.setPreferredSize(new Dimension(60,150));
    colorPanel.setPreferredSize(new Dimension(60,60));
    dummyPanel.setPreferredSize(new Dimension(60,70));
    aPanel.setMinimumSize(new Dimension(60,280));    
    leftPanel.setLayout(new BorderLayout());
    leftPanel.add(toolPanel,BorderLayout.NORTH); 
    leftPanel.add(colorPanel,BorderLayout.CENTER);
    leftPanel.add(dummyPanel,BorderLayout.SOUTH); 
   
    toolPanel.setLayout(new GridLayout(5,2));
    toolPanel.add(eraserButton);
   
    toolPanel.add(fillButton); 
    
    toolPanel.add(penButton);
   
    toolPanel.add(brushButton);
    toolPanel.add(largeButton);
    toolPanel.add(getButton);
  
    toolPanel.add(lineButton);
    toolPanel.add(polyButton);
    toolPanel.add(cycleButton);
    toolPanel.add(rectButton);
    
    
    colorPanel.add(colorButton);
        
        statePanel.setLayout(new BorderLayout());
        statePanel.add(helpText,BorderLayout.WEST);
        statePanel.add(pointText,BorderLayout.CENTER);
        statePanel.add(rightText,BorderLayout.EAST);
      
        //aMenuBar.setFont();
        aMenuBar.add(fileMenu);
        fileMenu.add(newMenuItem);
        fileMenu.add(openMenuItem);
        fileMenu.addSeparator();
        fileMenu.add(saveMenuItem);
        fileMenu.add(saveAsMenuItem);
        
        aMenuBar.add(editMenu);
        
        aMenuBar.add(viewMenu);
        aMenuBar.add(ImageMenu);
        ImageMenu.add(iColorMenuItem);
        aMenuBar.add(colorMenu);
        colorMenu.add(colorMenuItem);
        aMenuBar.add(helpMenu);
       // editMenu.add(cutMenuItem);
       // editMenu.add(copyMenuItem);
       
        
        
        aFrame.getContentPane().setLayout(new BorderLayout());
        
        aFrame.setSize(400,350);
        //aFrame.setMinimumSize(new Dimension(200,350));
        
        aFrame.setJMenuBar(aMenuBar);
       
        aFrame.getContentPane().add(leftPanel,BorderLayout.WEST);
        
      
        aFrame.getContentPane().add(aPanel,BorderLayout.CENTER);
        
        aFrame.getContentPane().add(statePanel,BorderLayout.SOUTH);
        //aFrame.pack();   
        
      
        Toolkit tk = Toolkit.getDefaultToolkit();
        Image imag = tk.getImage("mspaint.gif");

        aFrame.setIconImage(imag);
        //aFrame.setUndecorated(true);
        //aFrame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

        aFrame.setVisible(true);
        aFrame.setDefaultCloseOperation(3);
        
       
}//end of constructor



public class ToolPanel extends JPanel{
	
  ToolPanel(){
	addMouseListener(new MouseAdapter(){

         public void mouseEntered(MouseEvent e){
     
         helpText.setText("选择合适的线型");
             
             }
        
          
        public void mouseExited(MouseEvent e){
     
        helpText.setText("要获得帮助,请在帮助菜单中单击帮助主题");
             
             }
          });
	
	}

}
public class RectButton extends JButton{
	RectButton()
	{
		//new ImageIcon("rect.gif"); 
		addMouseListener(new MouseAdapter(){

        public void mouseEntered(MouseEvent e){
     
        helpText.setText("用选定的填充模式画矩形");
           }  
        public void mouseExited(MouseEvent e){
     
        helpText.setText("要获得帮助,请在帮助菜单中单击帮助主题");
             
             }   
        });
        
    }
} 
public class LineButton extends JButton{
	LineButton()
	{
		//new ImageIcon("rect.gif"); 
		addMouseListener(new MouseAdapter(){

        public void mouseEntered(MouseEvent e){
     
        helpText.setText("用选定的线型直线");
           }  
        public void mouseExited(MouseEvent e){
     
        helpText.setText("要获得帮助,请在帮助菜单中单击帮助主题");
             
             }   
        });
        
    }
} 
public class CycleButton extends JButton{
	CycleButton()
	{
		 
		addMouseListener(new MouseAdapter(){

        public void mouseEntered(MouseEvent e){
     
        helpText.setText("用选定的填充模式画椭圆");
           }  
        public void mouseExited(MouseEvent e){
     
        helpText.setText("要获得帮助,请在帮助菜单中单击帮助主题");
             
             }   
        });
        
    }
} 
public class PenButton extends JButton{
	PenButton()
	{
		//new ImageIcon("rect.gif"); 
		addMouseListener(new MouseAdapter(){

        public void mouseEntered(MouseEvent e){
     
        helpText.setText("画任意形状的线条");
           }  
        public void mouseExited(MouseEvent e){
     
        helpText.setText("要获得帮助,请在帮助菜单中单击帮助主题");
             
             }   
        });
        
    }
}    
public class BrushButton extends JButton{
	BrushButton()
	{
		//new ImageIcon("rect.gif"); 
		addMouseListener(new MouseAdapter(){

        public void mouseEntered(MouseEvent e){
     
        helpText.setText("用选定的线条粗细和形状使用刷子");
           }  
        public void mouseExited(MouseEvent e){
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -