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

📄 mainwindow.java

📁 CMU图象模块的上层浏览软件,可和CMU模块直接通信
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.File;

import javax.swing.*;
import javax.swing.event.*;

/*
  This object controls the way the GUI looks and handles the 
  menu events etc.  This is also where the serial config 
  can be found.
*/

public class MainWindow
	implements ActionListener, ItemListener, AdjustmentListener {
	static volatile int commandVal;
	JButton sendFrame_b;
	JButton saveFrame_b;
	Thread updateThread;
	static CameraImage cImage;
	volatile Motion myMotion;
	volatile ColorTrack myColor;
	volatile Histogram myHistogram;
	volatile Stats myStats;
	AboutWindow myAbout;
	int file_cnt, msg_cnt;
	JMenu images_m;
	JMenuBar menuBar;
	JFrame pref_f, scale_f;
	static JTextField thresh_t,
		nf_t,
		rmin_t,
		gmin_t,
		bmin_t,
		rmax_t,
		gmax_t,
		bmax_t;
	static JTextArea path_crl_t;
	static JTextField tol_t, time_t, size_t, port_t;
	JButton setParams_b;
	static JPanel cam_p, stats_p;
	static JPanel configb_p;
	static JPanel config_p;
	static JPanel settings_p;
	static JPanel servo_p;
	static JTextField xpos_t, ypos_t;
	static JTextField status_t;
	static JLabel servo0_l, servo1_l, servo2_l, servo3_l, servo4_l;
	static JScrollBar servo0_s, servo1_s, servo2_s, servo3_s, servo4_s;
	static JPanel JPanel1;
	static JComboBox whiteBalance;
	static JComboBox autoGain;
	static JComboBox fps;
	static JComboBox channel_c;
	static JComboBox hr_c;
	static JComboBox lm_c;
	static JComboBox as_c;
	static JComboBox color_c;
	static JComboBox bm_c;
	static JComboBox sf_chan_c;
	static JComboBox pd_c;
	static JComboBox ti_c;
	static JComboBox fs_c;
	static JComboBox hd_c;
	static JComboBox dc_c;
	static JLabel cFPS_l,mFPS_l,sFPS_l,hFPS_l;
	JButton clear_b;
	static CameraSerial mySerial;
	static int cameraType, cameraVersion;
	static int track_color_linemode, get_mean_linemode, frame_diff_linemode;
	static JTextField rmean_l, gmean_l, bmean_l;
	static JTextField x1, y1, x2, y2, dsx, dsy;
	static JTextField pan_range_far,
		pan_range_near,
		pan_step,
		tilt_range_far,
		tilt_range_near,
		tilt_step;
	volatile int res;
	JButton send_command_b;
	static JProgressBar frameProg;

	MainWindow() {
		res = 0;
		file_cnt = 0;
		msg_cnt = 0;
		track_color_linemode = 0;
		get_mean_linemode = 0;
		frame_diff_linemode = 0;
		CommWindow cWindow = new CommWindow(); // Serial Config Window
		while (cWindow.ready() == 0) {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		JPanel1 = new JPanel();

		myAbout = new AboutWindow();
		JFrame main_f = new JFrame("CMUcam2 GUI");
		main_f.getContentPane().setLayout(new BorderLayout());
		main_f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		cam_p = new JPanel();
		config_p = new JPanel();

		tol_t = new JTextField("25", 5);
		JPanel select_p = new JPanel();
		select_p.add(new JLabel("Select Tolerance"));
		select_p.add(tol_t);
		clear_b = new JButton("clear");
		select_p.add(clear_b);
		clear_b.addActionListener(this);

		/**************************** Settings JPanel  **********************/
		JPanel settingspad_p = new JPanel();
		settings_p = new JPanel();
		GridLayout set_l = new GridLayout(13, 3);
		set_l.setVgap(10);
		set_l.setHgap(10);
		settings_p.setLayout(set_l);

		//settings_p.add(new JLabel(""));
		//settings_p.add(new JLabel(""));
		//settings_p.add(new JLabel(""));

		JLabel color_l = new JLabel("Color Space");
		color_c = new JComboBox();
		color_c.addItem("RGB");
		color_c.addItem("YCrCb");
		color_c.addItemListener(this);
		settings_p.add(color_l);
		settings_p.add(color_c);
		settings_p.add(new JLabel(""));
		//JButton setcs_b = new JButton( "Set Color" );
		//settings_p.add(setcs_b);
		//setcs_b.addActionListener(this);

		JLabel wb_l = new JLabel("White Balance");
		whiteBalance = new JComboBox();
		whiteBalance.addItem("Off");
		whiteBalance.addItem("On");
		whiteBalance.addItemListener(this);
		settings_p.add(wb_l);
		settings_p.add(whiteBalance);
		settings_p.add(new JLabel(""));
		//JButton setwb_b = new JButton( "Set WB" );
		//settings_p.add(setwb_b);
		//setwb_b.addActionListener(this);

		JLabel ag_l = new JLabel("Auto Gain");
		autoGain = new JComboBox();
		autoGain.addItem("On");
		autoGain.addItem("Off");
		autoGain.addItemListener(this);
		settings_p.add(ag_l);
		settings_p.add(autoGain);
		//JButton setag_b = new JButton( "Set Gain" );
		//settings_p.add(setag_b);
		//setag_b.addActionListener(this);
		settings_p.add(new JLabel(""));

		JLabel hr_l = new JLabel("Camera Resolution");
		hr_c = new JComboBox();
		hr_c.addItem("Low");
		hr_c.addItem("High");
		hr_c.addItemListener(this);
		settings_p.add(hr_l);
		settings_p.add(hr_c);
		settings_p.add(new JLabel(""));

		JLabel pd_l = new JLabel("Pixel Difference");
		pd_c = new JComboBox();
		pd_c.addItem("Off");
		pd_c.addItem("On");
		pd_c.addItemListener(this);
		settings_p.add(pd_l);
		settings_p.add(pd_c);
		settings_p.add(new JLabel(""));

		JLabel ti_l = new JLabel("Inverted Tracking");
		ti_c = new JComboBox();
		ti_c.addItem("Off");
		ti_c.addItem("On");
		ti_c.addItemListener(this);
		settings_p.add(ti_l);
		settings_p.add(ti_c);
		settings_p.add(new JLabel(""));

		JLabel fs_l = new JLabel("Frame Stream");
		fs_c = new JComboBox();
		fs_c.addItem("Off");
		fs_c.addItem("On");
		fs_c.addItemListener(this);
		settings_p.add(fs_l);
		settings_p.add(fs_c);
		settings_p.add(new JLabel(""));

		JLabel hd_l = new JLabel("HiRes Frame Diff");
		hd_c = new JComboBox();
		hd_c.addItem("Off");
		hd_c.addItem("On");
		hd_c.addItemListener(this);
		settings_p.add(hd_l);
		settings_p.add(hd_c);
		settings_p.add(new JLabel(""));

		JLabel dc_l = new JLabel("Diff Channel");
		dc_c = new JComboBox();
		dc_c.addItem("Red");
		dc_c.addItem("Green");
		dc_c.addItem("Blue");
		settings_p.add(dc_l);
		settings_p.add(dc_c);
		settings_p.add(new JLabel(""));
		dc_c.setSelectedIndex(1);
		dc_c.addItemListener(this);

		JLabel lm_l = new JLabel("Line Modes");
		lm_c = new JComboBox();
		lm_c.addItem("Off");
		lm_c.addItem("Track Color-Bitmap");
		lm_c.addItem("Track Color-Stats");
		lm_c.addItem("Get Mean data");
		lm_c.addItem("Get Mean data-stats");
		lm_c.addItem("Frame Diff-Bitmap");
		lm_c.addItem("Frame Diff-Deltas");
		lm_c.addItem("Frame Diff-Buffer");
		lm_c.addItemListener(this);
		settings_p.add(lm_l);
		settings_p.add(lm_c);
		//JButton setlm_b = new JButton( "Set LM" );
		//settings_p.add(setlm_b);
		//setlm_b.addActionListener(this);
		settings_p.add(new JLabel(""));

		JLabel bm_l = new JLabel("Buffer Mode");
		bm_c = new JComboBox();
		bm_c.addItem("Stream");
		bm_c.addItem("Single");
		bm_c.addItemListener(this);
		settings_p.add(bm_l);
		settings_p.add(bm_c);
		JButton setbm_b = new JButton("read frame");
		settings_p.add(setbm_b);
		setbm_b.addActionListener(this);

		JLabel nf_l = new JLabel("Noise Filter");
		nf_t = new JTextField("2", 5);
		settings_p.add(nf_l);
		settings_p.add(nf_t);
		JButton setnf_b = new JButton("Set NF");
		settings_p.add(setnf_b);
		setnf_b.addActionListener(this);

		JLabel rsa_l = new JLabel("Update All Parameters");
		settings_p.add(rsa_l);
		JButton rsa_b = new JButton( "Update ALL" );
		settings_p.add(rsa_b);
		rsa_b.addActionListener(this);
		settings_p.add(new JLabel(""));
		
		
		/*
		JButton regUpdate_b=new JButton("Set Reg");
		settings_p.add(regUpdate_b);
		regUpdate_b.addActionListener(this);
		*/

		//settings_p.add(servo_b);
		settingspad_p.setLayout(new BorderLayout());
		settingspad_p.add("Center", settings_p);
		JPanel vw_ds_p = new JPanel();
		vw_ds_p.setLayout(new BorderLayout());

		JPanel vw_p = new JPanel();
		vw_p.add(new JLabel("Virtual Window:"));
		x1 = new JTextField("100", 5);
		y1 = new JTextField("100", 5);
		x2 = new JTextField("100", 5);
		y2 = new JTextField("100", 5);
		vw_p.add(x1);
		vw_p.add(y1);
		vw_p.add(x2);
		vw_p.add(y2);
		JButton vw_b = new JButton("Set Window");
		vw_p.add(vw_b);
		vw_b.addActionListener(this);

		JPanel ds_p = new JPanel();
		ds_p.add(new JLabel("Down Sampling:"));
		ds_p.add(new JLabel("X Axis:"));
		dsx = new JTextField("1", 5);
		ds_p.add(dsx);
		ds_p.add(new JLabel("Y Axis:"));
		dsy = new JTextField("1", 5);
		ds_p.add(dsy);
		JButton ds_b = new JButton("Down Sample");
		ds_p.add(ds_b);
		ds_b.addActionListener(this);
		vw_ds_p.add("North", ds_p);
		vw_ds_p.add("South", vw_p);
		//vw_ds_p.add("East", rsa_b);
		settingspad_p.add("South", vw_ds_p);
		
		/****************************   Servo JPanel    **********************/
		JPanel servopad_p = new JPanel();
		servo_p = new JPanel();
		GridLayout set2_l = new GridLayout(12, 3);
		set2_l.setVgap(10);
		set2_l.setHgap(10);
		servo_p.setLayout(set2_l);

		JLabel as_l = new JLabel("Auto Servo");
		as_c = new JComboBox();
		as_c.addItem("Off");
		as_c.addItem("On");
		as_c.addItemListener(this);
		servo_p.add(as_l);
		servo_p.add(as_c);
		//JButton setres_b = new JButton( "Set Res" );
		//settings_p.add(setres_b);
		//setres_b.addActionListener(this);
		servo_p.add(new JLabel(""));

		JLabel servo0 = new JLabel("Servo 0:");
		servo0_s = new JScrollBar(JScrollBar.HORIZONTAL, 127, 1, 0, 255);
		JLabel servo1 = new JLabel("Servo 1:");
		servo1_s = new JScrollBar(JScrollBar.HORIZONTAL, 127, 1, 0, 255);
		JLabel servo2 = new JLabel("Servo 2:");
		servo2_s = new JScrollBar(JScrollBar.HORIZONTAL, 127, 1, 0, 255);
		JLabel servo3 = new JLabel("Servo 3:");
		servo3_s = new JScrollBar(JScrollBar.HORIZONTAL, 127, 1, 0, 255);
		JLabel servo4 = new JLabel("Servo 4:");
		servo4_s = new JScrollBar(JScrollBar.HORIZONTAL, 127, 1, 0, 255);

		servo0_l = new JLabel("127");
		servo1_l = new JLabel("127");
		servo2_l = new JLabel("127");
		servo3_l = new JLabel("127");
		servo4_l = new JLabel("127");

		//    JButton servo_b = new JButton("Set Servos");
		servo_p.add(servo0);
		servo_p.add(servo0_s);
		servo_p.add(servo0_l);
		servo_p.add(servo1);
		servo_p.add(servo1_s);
		servo_p.add(servo1_l);
		servo_p.add(servo2);
		servo_p.add(servo2_s);
		servo_p.add(servo2_l);
		servo_p.add(servo3);
		servo_p.add(servo3_s);
		servo_p.add(servo3_l);
		servo_p.add(servo4);
		servo_p.add(servo4_s);
		servo_p.add(servo4_l);

		servo0_s.addAdjustmentListener(this);
		servo1_s.addAdjustmentListener(this);
		servo2_s.addAdjustmentListener(this);
		servo3_s.addAdjustmentListener(this);
		servo4_s.addAdjustmentListener(this);

		pan_range_far = new JTextField("16", 5);
		pan_range_near = new JTextField("8", 5);
		pan_step = new JTextField("5", 5);
		tilt_range_far = new JTextField("30", 5);
		tilt_range_near = new JTextField("15", 5);
		tilt_step = new JTextField("5", 5);
		servo_p.add(new JLabel("pan range far:"));
		servo_p.add(pan_range_far);
		servo_p.add(new JLabel(""));
		servo_p.add(new JLabel("pan range near:"));
		servo_p.add(pan_range_near);
		servo_p.add(new JLabel(""));
		servo_p.add(new JLabel("pan step:"));
		servo_p.add(pan_step);
		servo_p.add(new JLabel(""));
		servo_p.add(new JLabel("tilt range far:"));
		servo_p.add(tilt_range_far);
		servo_p.add(new JLabel(""));
		servo_p.add(new JLabel("tilt range near:"));
		servo_p.add(tilt_range_near);
		servo_p.add(new JLabel(""));
		servo_p.add(new JLabel("tilt step:"));
		servo_p.add(tilt_step);
		JButton update_servo_b = new JButton("Config Servos");
		servo_p.add(update_servo_b);
		update_servo_b.addActionListener(this);

		/****************************   Stats JPanel    **********************/
		myStats = new Stats();
		JPanel statistics_p = new JPanel();
		statistics_p.setLayout(new BorderLayout());
		JPanel stats_p = new JPanel();
		stats_p.add(new JLabel("FPS"));
						sFPS_l=new JLabel("0");
						stats_p.add(sFPS_l);
						stats_p.add(new JLabel("      "));
		JLabel rgb_l = new JLabel("RGB:");
		stats_p.add(rgb_l);
		rmean_l = new JTextField("0", 5);
		stats_p.add(rmean_l);
		gmean_l = new JTextField("0", 5);
		stats_p.add(gmean_l);
		bmean_l = new JTextField("0", 5);
		stats_p.add(bmean_l);

		JButton stats_b = new JButton("Get Mean");
		stats_p.add(stats_b);
		stats_b.addActionListener(this);
		
		statistics_p.add("Center", myStats);
		statistics_p.add("South", stats_p);
		/**************************** Histogram JPanel  **********************/
		myHistogram = new Histogram();
		JPanel histogram_p = new JPanel();
		histogram_p.setLayout(new BorderLayout());
		JPanel hist_p = new JPanel();

		hist_p.add(new JLabel("FPS"));
		hFPS_l=new JLabel("0");
		hist_p.add(hFPS_l);
		hist_p.add(new JLabel("      "));
								
		channel_c = new JComboBox();
		channel_c.addItem("Red (Cr)");
		channel_c.addItem("Green (Y)");
		channel_c.addItem("Blue (Cb)");
		channel_c.addItemListener(this);
		hist_p.add(channel_c);

		JButton hist_b = new JButton("Get Histogram");
		hist_p.add(hist_b);
		hist_b.addActionListener(this);
		
		histogram_p.add("Center", myHistogram);
		histogram_p.add("South", hist_p);

		/****************************  Color Tracking JPanel  ***************/
		myColor = new ColorTrack();
		JPanel color_p = new JPanel();
		JPanel col_p = new JPanel();
		color_p.setLayout(new BorderLayout());
		
		rmin_t = new JTextField("0", 5);
		gmin_t = new JTextField("0", 5);
		bmin_t = new JTextField("0", 5);
		rmax_t = new JTextField("0", 5);
		gmax_t = new JTextField("0", 5);
		bmax_t = new JTextField("0", 5);

		col_p.add(new JLabel("min:"));
		col_p.add(rmin_t);
		col_p.add(gmin_t);
		col_p.add(bmin_t);

		col_p.add(new JLabel("max:"));
		col_p.add(rmax_t);
		col_p.add(gmax_t);
		col_p.add(bmax_t);

		JPanel colb_p = new JPanel();
		colb_p.setLayout(new BorderLayout());
		JPanel tc_p = new JPanel();
		tc_p.add(new JLabel("FPS:"));
						cFPS_l=new JLabel("0");
						tc_p.add(cFPS_l);
				tc_p.add(new JLabel("     "));

⌨️ 快捷键说明

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