簡易xpグラフィックスボードプログラムフロー

10959 ワード

xp簡易グラフィックスボードプログラムの流れについて:
1.メインウィンドウのサイズ設定、タイトル設定、閉じる方法の作成、表示
2.メインウィンドウレイアウトを枠線レイアウトとして指定
3.左ツール選択パネル、中央描画パネル、下の色選択パネルを作成する
  色、サイズを設定し、メインウィンドウで指定した位置にパネルを追加します(東西南北中).
中間図面パネルの実装:
1.図面作成メインパネルdrawpanelサイズ、色を設定し、drawpanelを中間パネルに追加する
   (図形描画メインパネルを常に中央パネルの左上隅にするには、FlowLayout.LEFTとしてレイアウトを指定します)
2.DrawListenerリスナー実装MouseListenerインタフェースの作成
3.コンストラクション関数によるdrawpanelの共有 
4.Graphicsオブジェクトg=draw.getGraphics()を作成する.drawpanelで図面を描く権限の取得
5.mousePressed()とmouseReleased()でそれぞれ座標を取得
  呼び出し関数g.drawLine(x 1,y 1,x 2,y 2);直線を描くことができます
(直線、矩形、楕円は関数を呼び出すことができ、その他はまだ実現していません...)
左側のツール選択パネルの実装:
1.ラジオボタンを作成して左のパネルに追加し、一意のIDを設定
2.ボタングループオブジェクトを作成するすべてのラジオボタンをボタングループオブジェクトに追加し、ラジオボタンを論理グループ化する
  (ラジオボタンの1つがデフォルト選択(setSelected)に設定され、空のポインタのエラーが発生しないようにします)
3.ボタンにピクチャを追加して呼び出す4つのメソッドsetIcon()setRolloverIcon()
  setPressedIcon()  setSelectedIcon()
4.DrawListener Listenerでは、コンストラクション関数によりボタングループオブジェクトgroupを共有する
  group.getSelection();メソッド選択したボタンモデルを返す
5.model.getActionCommand();アクションコマンドを取得
  動作コマンド呼び出しによって異なる方法で異なる機能を実現
下の色選択パネル:
1.前景色、後景色ラベルを作成絶対位置決めレイアウトを使用して位置、色、表示を設定する(setopaque)
  下部パネルに追加
2.選択した色板ラベルの位置、色、表示、および下部パネルへの追加の作成
  各パレットラベルにカラーリスナーを追加
3.カラーリスナー実現MouseListenerインタフェース構築関数による前景色・後景色ラベルの共有
4.e.getSource()イベントソースオブジェクトを強制的にJLabelに変換して現在の背景色を取得
5.e.getButton()マウスが左ボタンか右ボタンかを取得
  現在の背景色を前景色ラベルまたは後景色ラベルに渡す
6.DrawListener Listenerは、コンストラクション関数を使用して前景色ラベルと後景色ラベルを共有します.
  前景色、後景色ラベル前景色、後景色を取得
7.マウスの左ボタンか右ボタンかを判断して前景色または後景色をg.setColor()のパラメータに割り当てる
  最終的に描画ボードに表示される色を設定します.
(カラーパレットラベルマウスの左ボタンまたは右ボタンで前景色または後景色ラベルに色を付けます.
  前景色または後景色ラベルの色によって画板に現れる色が決まります)


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;


public class DrawUI {
public static void main(String[] args) {
	 JFrame jf=new JFrame();
	 jf.setSize(600, 500);
	 jf.setTitle("XP   ");
	 jf.setDefaultCloseOperation(3);
     //           
	 BorderLayout layout=new BorderLayout();
	 jf.setLayout(layout);
	 //           
	 JPanel panelleft=new JPanel();
	 panelleft.setBackground(Color.blue);
	 Dimension dimleft=new Dimension(100,1);
	 panelleft.setPreferredSize(dimleft);
	 
	
	 JPanel panelcenter=new JPanel();
	 panelcenter.setBackground(Color.gray);
	 //          
//	 Dimension dimcenter=new Dimension(1,1);
//	 panelcenter.setPreferredSize(dimcenter);
	 
	 
	 JPanel panelfoot=new JPanel();
	// panelfoot.setBackground(Color.green);
	 Dimension dimfoot=new Dimension(1,100);
	 panelfoot.setPreferredSize(dimfoot);
	
	 
	 //         ,      【     】
	 jf.add(panelleft,BorderLayout.WEST);
	 jf.add(panelcenter,BorderLayout.CENTER);
	 jf.add(panelfoot,BorderLayout.SOUTH);
	   
	 //*********************              ***********************//
	 //     ,           
	 ButtonGroup  group =new ButtonGroup();
	 String[] strs = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
				"line", "11", "rect", "13", "oval", "15" };
     for(int i=0;i<16;i++){
	 JRadioButton button1=new JRadioButton();
	 panelleft.add(button1);//       
	 group.add(button1);//    
	 button1.setActionCommand(strs[i]);//      
	 button1.setSelected(true);//      
	 //       
	 ImageIcon defaultIcon=new ImageIcon("img/draw"+i+".jpg");
	 button1.setIcon(defaultIcon);
	 
	 ImageIcon rolloverIcon=new ImageIcon("img/draw"+i+"-1.jpg");
	 button1.setRolloverIcon(rolloverIcon);
	 
	 ImageIcon pressedIcon=new ImageIcon("img/draw"+i+"-2.jpg");
	 button1.setPressedIcon(pressedIcon);
	 
	 ImageIcon selectedIcon=new ImageIcon("img/draw"+i+"-3.jpg");
	 button1.setSelectedIcon(selectedIcon);
	 	 
}	 
	 //*****************            ***************************//
	 
	 JPanel  drawpanel=new JPanel();
	 Dimension drawdim=new Dimension(400,300);
	 drawpanel.setPreferredSize(drawdim);
	 drawpanel.setBackground(Color.white);
	 
	 //              
	 //            
	 //                 
	 FlowLayout  drawlayout =new FlowLayout(FlowLayout.LEFT);
	 panelcenter.setLayout(drawlayout);
	 panelcenter.add(drawpanel);
	 //********************              ***********************//
	    JLabel frontLabel=new JLabel();
	    JLabel backLabel=new JLabel();
	     //         
	    panelfoot.setLayout(null);
	    //  frontLabel      
	    frontLabel.setBounds(50, 20,40,60);
	    backLabel.setBounds(110, 20,40,60);
	    //      
	    frontLabel.setBackground(Color.black);
	    backLabel.setBackground(Color.BLUE);
	    //           
	    frontLabel.setOpaque(true);
	    backLabel.setOpaque(true);
	    
	    panelfoot.add(frontLabel);
	    panelfoot.add(backLabel);
	 
	    Color[] cs = { Color.BLACK, Color.GRAY, new Color(128, 0, 0),
				Color.RED, new Color(255, 128, 0), Color.YELLOW, Color.GREEN,
				new Color(0, 128, 255), Color.BLUE, Color.MAGENTA, Color.BLACK,
				Color.GRAY, new Color(128, 0, 0), Color.RED,
				new Color(255, 128, 0), Color.YELLOW, Color.GREEN,
				new Color(0, 128, 255), Color.BLUE, Color.MAGENTA };

	    
	    ColorListener mlis = new ColorListener(frontLabel, backLabel);
	   //   
	    for(int i=0;i<20;i++){
	    	JLabel colorLabel=new JLabel();
	    	// colorLabel       
	    	colorLabel.addMouseListener(mlis);
	    	if(i<10){
	    		colorLabel.setBounds(160+30*i,20,25,25);
	    	}
	    	else {
	    		colorLabel.setBounds(160+30*(i-10),50,25,25);
	    	}
	    		colorLabel.setBackground(cs[i]);
	    		colorLabel.setOpaque(true);
	          panelfoot.add(colorLabel)	;	
	    	}
	 
	    
	   jf.setVisible(true);

	 //      drawpanel  ,      drawpanel       
	 DrawListener listener=new DrawListener(drawpanel, group,frontLabel,backLabel);
	 //          
	 drawpanel.addMouseListener(listener);
	  
}
}


import java.awt.Color;
import java.awt.Graphics;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class DrawListener  implements MouseListener {
          private int x1,x2,y1,y2;
          private Graphics g;
          private JPanel drawpanel;
          private ButtonGroup group;
          private String str="line";
          private Color frontColor = Color.RED;//        
      	  private Color backColor = Color.BLUE;//    
      	  private JLabel frontLabel;
      	  private JLabel backLabel;

       //                      
      public DrawListener(JPanel drawpanel1,ButtonGroup group1,JLabel fLabel, JLabel bLabel){
        	   drawpanel=drawpanel1;
        	   group=group1;
        	   frontLabel = fLabel;
       		   backLabel = bLabel;
            }
       
	  public void mousePressed(MouseEvent e) {
		  //                      【  】
		  //  drawPanel         ,            
		   g=drawpanel.getGraphics();
		   
		//          
			frontColor = frontLabel.getBackground();
			backColor = backLabel.getBackground();

			//               
			int num = e.getButton();
			if (num == 1) {
				//         
				g.setColor(frontColor);
			} else if (num == 3) {
				g.setColor(backColor);
			}
			//                     
			//           
		   ButtonModel model=group.getSelection();
		    //       [          ]
		   str=model.getActionCommand();
		   
		   // str=group.getSelection().getActionCommand();
		   x1=e.getX();
		   y1=e.getY();	   
	}
	public void mouseReleased(MouseEvent e) {
		  x2=e.getX();
		  y2=e.getY();
		//     
		  if(str.equals("line")){
			  g.drawLine(x1, y1, x2, y2);		  
		  }
		  else if(str.equals("rect")){
			  int x=x1<x2?x1:x2;
			  int y=y1<y2?y1:y2;
			  int width=x1<x2?x2-x1:x1-x2;
		      int height=y1<y2?y2-y1:y1-y2;
		      g.drawRect(x, y, width, height);
		  }
		  else if(str.equals("oval")){
			  int x=x1<x2?x1:x2;
			  int y=y1<y2?y1:y2;
			  int width=x1<x2?x2-x1:x1-x2;
		      int height=y1<y2?y2-y1:y1-y2;
		      g.drawOval(x, y, width, height);    
		  }
		  
	}

	public void mouseClicked(MouseEvent e) {
		
	}
	public void mouseEntered(MouseEvent e) {

	}
	public void mouseExited(MouseEvent e) {
		
	}

}


import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JLabel;
/**
 *         
 * @author Administrator
 *
 */
public class ColorListener implements MouseListener{
	

	private JLabel frontLabel;
	private JLabel backLabel;

	public ColorListener(JLabel fLabel, JLabel bLabel) {
		frontLabel = fLabel;
		backLabel = bLabel;
	}
	public void mouseReleased(MouseEvent e) {
	//       :       
    //        JLabel  ,          JLabel
	JLabel label=(JLabel)e.getSource();
	//      
    Color c=label.getBackground();
    //           
     int num=e.getButton();
     if(num==1){
    	 frontLabel.setBackground(c);
     }
     else if(num==3){
    	 backLabel.setBackground(c);
     }
	}
	public void mousePressed(MouseEvent e) {
		
	}
	

	public void mouseEntered(MouseEvent e) {
	
	}

	public void mouseExited(MouseEvent e) {
	
	}

	public void mouseClicked(MouseEvent e) {
		
	}


}