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

📄 j_painter.java

📁 这是一个简单的画图程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			m_lab1.setToolTipText("选择文件保存的格式");
			Container diagcon = m_diag.getContentPane();
			diagcon.setLayout(new FlowLayout(FlowLayout.LEFT));

			diagcon.add(m_lab);
			diagcon.add(m_text);

			diagcon.add(m_lab1);
			diagcon.add(m_combobox);

			diagcon.add(m_button);

			m_diag.setLocation(152, 120);
			m_diag.setResizable(true);//构造对话框
			m_button.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent eee) 
				{
					m_filename = m_text.getText();
					int ie = m_combobox.getSelectedIndex();
					if (ie == 0)
						m_formatname = "jpg";
					else if (ie == 1)
						m_formatname = "bmp";
					else if (ie == 2)
						m_formatname = "png";

					try 
					{
						File out = new File(m_filename + "." + m_formatname);
						if (m_buffImage != null)
							ImageIO.write(m_buffImage, m_formatname, out);
					} 
					catch (IOException eev) 
					{

					}
					m_diag.setVisible(false);
				}// actionperformed

			});// BUTTON响应确定
			m_diag.setDefaultLookAndFeelDecorated(true);
			m_diag.setSize(300, 150);
			m_diag.setVisible(true);//
                	
          System.exit(0);
         }
           
			

        else if(a==1)
          {System.exit(0);}
               
      }
      

	
}
   

	// deal the save
	class J_dealSave implements ActionListener //保存图像
	{
		String m_filename = new String("");//路径名

	    String m_formatname = new String("");//保存格式名
		public void actionPerformed(ActionEvent event) 
		{
			String name[] = { new String("jpg"), new String("bmp"),
					new String("png") };
					
			final JDialog m_diag = new JDialog(m_fatherFrame, "Save dialog ",
					true);
			m_diag.setDefaultLookAndFeelDecorated(true);

			JLabel m_lab = new JLabel("输入保存路径名", null, JLabel.LEFT);
			JLabel m_lab1 = new JLabel("选择文件保存格式", null, JLabel.LEFT);
			final JTextField m_text = new JTextField("", 24);
			final JComboBox m_combobox = new JComboBox(name);
			JButton m_button = new JButton("确定");
			m_lab.setToolTipText("输入文件保存的路径名和文件名,如果只输入文件名,将被保存在本地路径中");
			m_lab1.setToolTipText("选择文件保存的格式");
			Container diagcon = m_diag.getContentPane();
			diagcon.setLayout(new FlowLayout(FlowLayout.LEFT));

			diagcon.add(m_lab);
			diagcon.add(m_text);

			diagcon.add(m_lab1);
			diagcon.add(m_combobox);

			diagcon.add(m_button);

			m_diag.setLocation(152, 120);
			m_diag.setResizable(true);//构造对话框
			m_button.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent eee) 
				{
					m_filename = m_text.getText();
					int ie = m_combobox.getSelectedIndex();
					if (ie == 0)
						m_formatname = "jpg";
					else if (ie == 1)
						m_formatname = "bmp";
					else if (ie == 2)
						m_formatname = "png";

					try 
					{
						File out = new File(m_filename + "." + m_formatname);
						if (m_buffImage != null)
							ImageIO.write(m_buffImage, m_formatname, out);
					} 
					catch (IOException eev) 
					{

					}
					m_diag.setVisible(false);
				}// actionperformed

			});// BUTTON响应确定
			m_diag.setDefaultLookAndFeelDecorated(true);
			m_diag.setSize(300, 150);
			m_diag.setVisible(true);//

		}
	}// end of deal save

	class J_dealEditClear implements ActionListener //清楚矩形框选择
	{
		public void actionPerformed(ActionEvent ev)
		{
			try {
				if (b_isExisteRecChoose) 
				{

					for (int kk = 0; kk < (cordinate[2] - cordinate[0] + 1); kk++) {

						m_buffImage.setRGB(cordinate[0] + kk, cordinate[1],
								rec_pixel[kk]);
					}
					for (int tt = 0; tt < (cordinate[3] - cordinate[1]); tt++) {
						m_buffImage.setRGB(cordinate[0], tt + cordinate[1],
								rec_pixel[tt * (cordinate[2] - cordinate[0])]);
					}

					for (int mm = 0; mm < (cordinate[3] - cordinate[1]); mm++) {
						m_buffImage.setRGB(cordinate[2], mm + cordinate[1],
								rec_pixel[(1 + mm)
										* (cordinate[2] - cordinate[0]) - 1]);
					}
					for (int mm = 0; mm < (cordinate[2] - cordinate[0]); mm++) {
						m_buffImage
								.setRGB(cordinate[0] + mm,	cordinate[3],rec_pixel[mm										
																															+ (cordinate[2] - cordinate[0])
												* (cordinate[3] - cordinate[1] - 1)	- 1]);
											
					}
				}//从保存象素中取出清除图像
				b_isExisteRecChoose = false;
				repaint();

			} 
			catch (Exception ee)
		    {

			}

		}

	}// end if J_Editclear

	class J_dealEditCut implements ActionListener //剪切图像
	{
		public void actionPerformed(ActionEvent ev) 
		{
			Graphics2D g2d = m_buffImage.createGraphics();
			g2d.setColor(Color.white);
			g2d.fillRect(cordinate[0], cordinate[1], cordinate[2]
					- cordinate[0] + 1, cordinate[3] - cordinate[1] + 1);

			repaint();//调用矩形框来清除图像
		}
	}// end of JEdit

	class J_dealEditPaste implements ActionListener //粘贴图像选取
	{
		public void actionPerformed(ActionEvent ev)
		 {

			m_buffImage.setRGB(m_clickedx, m_clickedy, cordinate[2]
					- cordinate[0], cordinate[3] - cordinate[1], rec_pixel, 0,
					cordinate[2] - cordinate[0]);

			repaint();
		}
	}// end of JEdit

	class J_dealColorChange implements ActionListener //颜色替换
	{

		public void mb_draw(int m_INTc1, int m_INTc2, double region) 
		{
			int pix[] = new int[m_Width * m_Height];
			int reg = (int) region;
			m_pixelGrabber = new PixelGrabber(m_buffImage, 0, 0, m_Width,
					m_Height, pix, 0, m_Width);
			try 
			{
				m_pixelGrabber.grabPixels();//获取整个图像所有的象素
			} 
			catch (InterruptedException e) 
			{
				System.out.println("Interrupted Error");
				return;
			}
			if ((m_pixelGrabber.getStatus() & ImageObserver.ABORT) != 0)
			 {
				System.out.println("error");
				return;
			}

			for (int m = 0; m < m_Height; m++) 
			{

				for (int n = 0; n < m_Width; n++) 
				{

					if (Math.abs(pix[m * m_Width + n] - m_INTc1) < reg)//判断图像中象素与给定的颜色值
					
					 {
						Graphics2D g2g = m_buffImage.createGraphics();
						m_buffImage.setRGB(n, m, m_INTc2);//替换
						repaint();
					}

				} // for2
			} // for1

		}// end of mb_draw

		public void actionPerformed(ActionEvent eee) //响应菜单
		{
			final JDialog m_diag = new JDialog(m_fatherFrame,
					"ColorReplace dialog ", true);
			JLabel m_lab = new JLabel("浮点数值", null, JLabel.LEFT);
			JLabel m_lab1 = new JLabel("原先颜色", null, JLabel.LEFT);
			JLabel m_lab2 = new JLabel("替换颜色", null, JLabel.LEFT);
			JLabel m_labRGB[] = { new JLabel("R"), new JLabel("G"),
					new JLabel("B"), new JLabel("R"), new JLabel("G"),
					new JLabel("G") };
			final JTextField m_text = new JTextField("", 10);
			final JTextField m_textRGB[] = { new JTextField("", 3),
					new JTextField("", 3), new JTextField("", 3),
					new JTextField("", 3), new JTextField("", 3),
					new JTextField("", 3) };

			JTextArea m_textArea = new JTextArea(
					"       说明:\n  用户输入一个浮点数,\n以及两个颜色值,\n当图形的某一个像素小于\n第一个颜色值,这个颜色值\n将被第二个颜色替换.",
					4, 15);
			m_textArea.setEditable(false);
			m_textArea.setFont(new Font("宋体", Font.PLAIN, 15));

			JButton m_button = new JButton("确定");
			JButton m_button1 = new JButton("取消");
			JButton m_button_c1 = new JButton("<<",
					new ImageIcon("tupian/T1.gif"));
			JButton m_button_c2 = new JButton("<<",
					new ImageIcon("tupian/T2.gif"));
			m_button_c1.setToolTipText("选择原有颜色");
			m_button_c2.setToolTipText("选择替换颜色");

			Container diagcon = m_diag.getContentPane();
			diagcon.setLayout(new FlowLayout(FlowLayout.LEFT));
			JPanel[] mpanel = new JPanel[4];
			for (int ii = 0; ii < 4; ii++)
			 {
				mpanel[ii] = new JPanel();
				diagcon.add(mpanel[ii]);
			}

			mpanel[0].add(m_lab);
			mpanel[0].add(m_text);

			mpanel[1].add(m_lab1);
			mpanel[1].add(m_labRGB[0]);
			mpanel[1].add(m_textRGB[0]);
			mpanel[1].add(m_labRGB[1]);
			mpanel[1].add(m_textRGB[1]);
			mpanel[1].add(m_labRGB[2]);
			mpanel[1].add(m_textRGB[2]);
			mpanel[1].add(m_button_c1);

			mpanel[2].add(m_lab2);
			mpanel[2].add(m_labRGB[3]);
			mpanel[2].add(m_textRGB[3]);
			mpanel[2].add(m_labRGB[4]);
			mpanel[2].add(m_textRGB[4]);
			mpanel[2].add(m_labRGB[5]);
			mpanel[2].add(m_textRGB[5]);
			mpanel[2].add(m_button_c2);
			mpanel[3].add(new JScrollPane(m_textArea));
			mpanel[3].add(m_button);
			mpanel[3].add(m_button1);

			m_lab.setToolTipText("输入一个浮点数值,当它满足小于两个颜色的差时对\r\n将原先颜色替换为新颜色");
			m_lab1.setToolTipText("输入被替换的颜色值");
			m_lab2.setToolTipText("输入替换的颜色值");
			m_button_c1.setPreferredSize(new Dimension(50, 23));
			m_button_c2.setPreferredSize(new Dimension(50, 23));

			m_diag.setLocation(162, 155);
			m_diag.setResizable(true);//初始化对话框
			m_button_c1.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent eeee) 
				{
					try {
						Color m_color_c1 = new Color(0, 0, 0);
						
						m_color_c1 = JColorChooser.showDialog(m_diag, "原先颜色选择",
								m_color_c1);
								
						m_textRGB[0].setText(String
								.valueOf(m_color_c1.getRed()));
								
						m_textRGB[1].setText(String.valueOf(m_color_c1
								.getGreen()));
								
						m_textRGB[2].setText(String.valueOf(m_color_c1
								.getBlue()));

					} //返回用户选取的颜色值到文本框
					catch (Exception ee) 
					{

					}

				}

			});
			m_button_c2.addActionListener(new ActionListener() 
			{
				public void actionPerformed(ActionEvent eee) 
				{
					try 
					{
						Color m_color_c2 = new Color(0, 0, 0);
						
						m_color_c2 = JColorChooser.showDialog(m_diag, "替换颜色选择",
								m_color_c2);
				
						m_textRGB[3].setText(String
								.valueOf(m_color_c2.getRed()));
								
						m_textRGB[4].setText(String.valueOf(m_color_c2
								.getGreen()));
								
						m_textRGB[5].setText(String.valueOf(m_color_c2
								.getBlue()));

					} //返回用户选取的颜色值到文本框
					catch (Exception ee) 
					{

					}

				}

			});
			m_button.addActionListener(new ActionListener() //响应确定按钮
			{
				public void actionPerformed(ActionEvent ev) 
				{
					try 
					{
						int r1 = Integer.valueOf(m_textRGB[0].getText());
						int g1 = Integer.valueOf(m_textRGB[1].getText());
						int b1 = Integer.valueOf(m_textRGB[2].getText());
						int r2 = Integer.valueOf(m_textRGB[3].getText());
						int g2 = Integer.valueOf(m_textRGB[4].getText());
						int b2 = Integer.valueOf(m_textRGB[5].getText());

						int ic1 = -(~((255 << 24) + (r1 << 16) + (g1 << 8) + b1) + 1);
						int ic2 = -(~((255 << 24) + (r2 << 16) + (g2 << 8) + b2) + 1);
                        //RGB值与Int值的转化
						
						double f = Integer.valueOf(m_text.getText());
						mb_draw(ic1, ic2, f);//调用函数来确定替换
						m_diag.setVisible(false);
					}
				 catch (Exception e)
					 {

					}

				}
			});
			m_button1.addActionListener(new ActionListener()
			 {
				public void actionPerformed(ActionEvent ev) 
				{
					m_diag.setVisible(false);
				}
			});

			m_diag.setSize(300, 240);
			m_diag.setVisible(true);
		}
	}// end of deal the colorrepalace

	// deal the help
	class J_dealHelp implements ActionListener 	
    {
		public void actionPerformed(ActionEvent ee) 
		{
			JMenuItem mItem = (JMenuItem) ee.getSource();

			if (mItem.getText().equals("About"))
				JOptionPane.showMessageDialog(null, "Paiter 1.0 version");

			else if (mItem.getText().equals("Introduction"))
			 {
				JDialog diag = new JDialog(m_fatherFrame, "lhsdialog", true);
				JTextArea m_textArea = new JTextArea("", 5, 15);
				m_textArea.setEditable(false);
				Container con = diag.getContentPane();
				con.add(new JScrollPane(m_textArea));
				diag.setLocation(160, 120);
				diag.setResizable(true);
				// diag.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
				m_textArea.setFont(new Font("宋体",Font.BOLD,20));
				m_textArea.setText("1.本程序可以作出圆,椭圆

⌨️ 快捷键说明

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