package com.netsdk.demo.frame; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.Vector; import javax.imageio.ImageIO; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import com.netsdk.common.*; import com.netsdk.demo.module.*; import com.netsdk.lib.*; import com.netsdk.lib.NetSDKLib.LLong; import com.sun.jna.CallbackThreadInitializer; import com.sun.jna.Native; import com.sun.jna.Pointer; /** * 实时预览Demo */ class PTZControlFrame extends JFrame{ private static final long serialVersionUID = 1L; private Vector chnlist = new Vector(); private boolean b_realplay = false; // 设备断线通知回调 private static DisConnect disConnect = new DisConnect(); // 网络连接恢复 private static HaveReConnect haveReConnect = new HaveReConnect(); // 预览句柄 public static LLong m_hPlayHandle = new LLong(0); // 获取界面窗口 private static JFrame frame = new JFrame(); public PTZControlFrame() { setTitle(Res.string().getPTZ()); setLayout(new BorderLayout()); pack(); setSize(800, 560); setResizable(false); setLocationRelativeTo(null); LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } loginPanel = new LoginPanel(); realPanel = new RealPanel(); ptz_picPanel = new PTZ_PICPanel(); add(loginPanel, BorderLayout.NORTH); add(realPanel, BorderLayout.CENTER); add(ptz_picPanel, BorderLayout.EAST); loginPanel.addLoginBtnActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(loginPanel.checkLoginText()) { if(login()) { frame = ToolKits.getFrame(e); frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getOnline()); } } } }); loginPanel.addLogoutBtnActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { frame.setTitle(Res.string().getPTZ()); logout(); } }); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { RealPlayModule.stopRealPlay(m_hPlayHandle); LoginModule.logout(); LoginModule.cleanup(); // 关闭工程,释放资源 dispose(); SwingUtilities.invokeLater(new Runnable() { public void run() { FunctionList demo = new FunctionList(); demo.setVisible(true); } }); } }); } /////////////////面板/////////////////// // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数 private static class DisConnect implements NetSDKLib.fDisConnect { public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort); // 断线提示 SwingUtilities.invokeLater(new Runnable() { public void run() { frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getDisConnectReconnecting()); } }); } } // 网络连接恢复,设备重连成功回调 // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数 private static class HaveReConnect implements NetSDKLib.fHaveReConnect { public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort); // 重连提示 SwingUtilities.invokeLater(new Runnable() { public void run() { frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getOnline()); } }); } } // 登录 public boolean login() { Native.setCallbackThreadInitializer(m_SnapReceiveCB, new CallbackThreadInitializer(false, false, "snapPicture callback thread")); if(LoginModule.login(loginPanel.ipTextArea.getText(), Integer.parseInt(loginPanel.portTextArea.getText()), loginPanel.nameTextArea.getText(), new String(loginPanel.passwordTextArea.getPassword()))) { loginPanel.setButtonEnable(true); setButtonEnable(true); for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) { chnlist.add(Res.string().getChannel() + " " + String.valueOf(i)); } // 登陆成功,将通道添加到控件 chnComboBox.setModel(new DefaultComboBoxModel(chnlist)); CapturePictureModule.setSnapRevCallBack(m_SnapReceiveCB); } else { JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); return false; } return true; } // 登出 public void logout() { RealPlayModule.stopRealPlay(m_hPlayHandle); LoginModule.logout(); loginPanel.setButtonEnable(false); setButtonEnable(false); realPlayWindow.repaint(); pictureShowWindow.setOpaque(true); pictureShowWindow.repaint(); b_realplay = false; realplayBtn.setText(Res.string().getStartRealPlay()); for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) { chnlist.clear(); } chnComboBox.setModel(new DefaultComboBoxModel()); } /* * 预览界面通道、码流设置 以及抓图面板 */ private class RealPanel extends JPanel { private static final long serialVersionUID = 1L; public RealPanel() { BorderEx.set(this, Res.string().getRealplay(), 2); setLayout(new BorderLayout()); channelPanel = new Panel(); realplayPanel = new JPanel(); add(channelPanel, BorderLayout.SOUTH); add(realplayPanel, BorderLayout.CENTER); /************ 预览面板 **************/ realplayPanel.setLayout(new BorderLayout()); realplayPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); realPlayWindow = new Panel(); realPlayWindow.setBackground(Color.GRAY); realplayPanel.add(realPlayWindow, BorderLayout.CENTER); /************ 通道、码流面板 **************/ chnlabel = new JLabel(Res.string().getChannel()); chnComboBox = new JComboBox(); streamLabel = new JLabel(Res.string().getStreamType()); String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()}; streamComboBox = new JComboBox(stream); realplayBtn = new JButton(Res.string().getStartRealPlay()); channelPanel.setLayout(new FlowLayout()); channelPanel.add(chnlabel); channelPanel.add(chnComboBox); channelPanel.add(streamLabel); channelPanel.add(streamComboBox); channelPanel.add(realplayBtn); chnComboBox.setPreferredSize(new Dimension(90, 20)); streamComboBox.setPreferredSize(new Dimension(90, 20)); realplayBtn.setPreferredSize(new Dimension(120, 20)); realPlayWindow.setEnabled(false); chnComboBox.setEnabled(false); streamComboBox.setEnabled(false); realplayBtn.setEnabled(false); realplayBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { realplay(); } }); } } // 预览 public void realplay() { if(!b_realplay) { m_hPlayHandle = RealPlayModule.startRealPlay(chnComboBox.getSelectedIndex(), streamComboBox.getSelectedIndex()==0? 0:3, realPlayWindow); if(m_hPlayHandle.longValue() != 0) { realPlayWindow.repaint(); b_realplay = true; chnComboBox.setEnabled(false); streamComboBox.setEnabled(false); realplayBtn.setText(Res.string().getStopRealPlay()); } } else { RealPlayModule.stopRealPlay(m_hPlayHandle); realPlayWindow.repaint(); b_realplay = false; chnComboBox.setEnabled(true); streamComboBox.setEnabled(true); realplayBtn.setText(Res.string().getStartRealPlay()); } } /* * 抓图显示与云台控制面板 */ private class PTZ_PICPanel extends JPanel { private static final long serialVersionUID = 1L; public PTZ_PICPanel() { setLayout(new BorderLayout()); Dimension dim = getPreferredSize(); dim.width = 320; setPreferredSize(dim); picPanel = new PICPanel(); // 图片显示面板 ptzPanel = new PTZPanel(); // 云台面板 add(picPanel, BorderLayout.CENTER); add(ptzPanel, BorderLayout.SOUTH); } } /* * 抓图显示面板 */ private class PICPanel extends JPanel { private static final long serialVersionUID = 1L; public PICPanel() { BorderEx.set(this, Res.string().getCapturePicture(), 2); setLayout(new BorderLayout()); pictureShowPanel = new JPanel(); snapPanel = new JPanel(); add(pictureShowPanel, BorderLayout.CENTER); add(snapPanel, BorderLayout.SOUTH); /************** 抓图按钮 ************/ snapPanel.setLayout(new BorderLayout()); snapPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); snapBtn = new JButton(Res.string().getRemoteCapture()); snapBtn.setPreferredSize(new Dimension(40, 23)); snapPanel.add(snapBtn, BorderLayout.CENTER); snapBtn.setEnabled(false); /************** 图片显示 ************/ pictureShowPanel.setLayout(new BorderLayout()); pictureShowPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); pictureShowWindow = new PaintPanel(); pictureShowPanel.add(pictureShowWindow, BorderLayout.CENTER); snapBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { if(!CapturePictureModule.remoteCapturePicture(chnComboBox.getSelectedIndex())) { JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } } }); } } /* * 云台控制面板 */ private class PTZPanel extends JPanel { private static final long serialVersionUID = 1L; public PTZPanel() { BorderEx.set(this, Res.string().getPTZControl(), 2); setPreferredSize(new Dimension(40, 205)); setLayout(new GridLayout(2, 1)); directionPanel = new JPanel(); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); ptzCtrlPanel = new JPanel(); add(directionPanel); add(ptzCtrlPanel); directionPanel.setLayout(new BorderLayout()); directionPanel.add(panel1, BorderLayout.NORTH); directionPanel.add(panel2, BorderLayout.CENTER); /*************** 云台方向 **************/ panel1.setLayout(new BorderLayout()); panel1.setBorder(new EmptyBorder(0, 5, 0, 5)); panel2.setLayout(new GridLayout(3, 3)); panel2.setBorder(new EmptyBorder(0, 5, 0, 5)); leftUpBtn = new JButton(Res.string().getLeftUp()); upBtn = new JButton(Res.string().getUp()); rightUpBtn = new JButton(Res.string().getRightUp()); leftBtn = new JButton(Res.string().getLeft()); rightBtn = new JButton(Res.string().getRight()); leftDownBtn = new JButton(Res.string().getLeftDown()); downBtn = new JButton(Res.string().getDown()); rightDownBtn = new JButton(Res.string().getRightDown()); operateJLabel = new JLabel("", JLabel.CENTER); String[] speed = {Res.string().getSpeed() + " 1", Res.string().getSpeed() + " 2", Res.string().getSpeed() + " 3", Res.string().getSpeed() + " 4", Res.string().getSpeed() + " 5", Res.string().getSpeed() + " 6", Res.string().getSpeed() + " 7", Res.string().getSpeed() + " 8"}; speedComboBox = new JComboBox(speed); speedComboBox.setSelectedIndex(4); speedComboBox.setPreferredSize(new Dimension(40, 21)); panel1.add(speedComboBox, BorderLayout.CENTER); panel2.add(leftUpBtn); panel2.add(upBtn); panel2.add(rightUpBtn); panel2.add(leftBtn); panel2.add(operateJLabel); panel2.add(rightBtn); panel2.add(leftDownBtn); panel2.add(downBtn); panel2.add(rightDownBtn); leftUpBtn.setEnabled(false); upBtn.setEnabled(false); rightUpBtn.setEnabled(false); leftBtn.setEnabled(false); rightBtn.setEnabled(false); leftDownBtn.setEnabled(false); downBtn.setEnabled(false); rightDownBtn.setEnabled(false); speedComboBox.setEnabled(false); /*************** 变焦、变倍、光圈 **************/ ptzCtrlPanel.setLayout(new GridLayout(3, 2)); ptzCtrlPanel.setBorder(new EmptyBorder(15, 5, 5, 5)); zoomAddBtn = new JButton(Res.string().getZoomAdd()); zoomDecBtn = new JButton(Res.string().getZoomDec()); focusAddBtn = new JButton(Res.string().getFocusAdd()); focusDecBtn = new JButton(Res.string().getFocusDec()); irisAddBtn = new JButton(Res.string().getIrisAdd()); irisDecBtn = new JButton(Res.string().getIrisDec()); ptzCtrlPanel.add(zoomAddBtn); ptzCtrlPanel.add(zoomDecBtn); ptzCtrlPanel.add(focusAddBtn); ptzCtrlPanel.add(focusDecBtn); ptzCtrlPanel.add(irisAddBtn); ptzCtrlPanel.add(irisDecBtn); zoomAddBtn.setEnabled(false); zoomDecBtn.setEnabled(false); focusAddBtn.setEnabled(false); focusDecBtn.setEnabled(false); irisAddBtn.setEnabled(false); irisDecBtn.setEnabled(false); // 向上 upBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlUpStart(chnComboBox.getSelectedIndex(), 0, speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlUpEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向下 downBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlDownStart(chnComboBox.getSelectedIndex(), 0, speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlDownEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向左 leftBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlLeftStart(chnComboBox.getSelectedIndex(), 0, speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlLeftEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向右 rightBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlRightStart(chnComboBox.getSelectedIndex(), 0, speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlRightEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向左上 leftUpBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlLeftUpStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlLeftUpEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向右上 rightUpBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlRightUpStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlRightUpEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向左下 leftDownBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlLeftDownStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlLeftDownEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 向右下 rightDownBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlRightDownStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlRightDownEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 变倍+ zoomAddBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlZoomAddStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlZoomAddEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 变倍- zoomDecBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlZoomDecStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlZoomDecEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 变焦+ focusAddBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlFocusAddStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlFocusAddEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 变焦- focusDecBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlFocusDecStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlFocusDecEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 光圈+ irisAddBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlIrisAddStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlIrisAddEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); // 光圈- irisDecBtn.addMouseListener(new MouseListener() { @Override public void mouseExited(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { if(PtzControlModule.ptzControlIrisDecStart(chnComboBox.getSelectedIndex(), speedComboBox.getSelectedIndex())) { operateJLabel.setText(Res.string().getSucceed()); } else { operateJLabel.setText(Res.string().getFailed()); } } @Override public void mouseReleased(MouseEvent e) { PtzControlModule.ptzControlIrisDecEnd(chnComboBox.getSelectedIndex()); operateJLabel.setText(""); } }); } } public fSnapReceiveCB m_SnapReceiveCB = new fSnapReceiveCB(); public class fSnapReceiveCB implements NetSDKLib.fSnapRev{ BufferedImage bufferedImage = null; public void invoke( LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) { if(pBuf != null && RevLen > 0) { String strFileName = SavePath.getSavePath().getSaveCapturePath(); System.out.println("strFileName = " + strFileName); byte[] buf = pBuf.getByteArray(0, RevLen); ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf); try { bufferedImage = ImageIO.read(byteArrInput); if(bufferedImage == null) { return; } ImageIO.write(bufferedImage, "jpg", new File(strFileName)); } catch (IOException e) { e.printStackTrace(); } // 界面显示抓图 SwingUtilities.invokeLater(new Runnable() { @Override public void run() { pictureShowWindow.setOpaque(false); pictureShowWindow.setImage(bufferedImage); pictureShowWindow.repaint(); } }); } } } private void setButtonEnable(boolean bln) { snapBtn.setEnabled(bln); leftUpBtn.setEnabled(bln); upBtn.setEnabled(bln); rightUpBtn.setEnabled(bln); leftBtn.setEnabled(bln); rightBtn.setEnabled(bln); leftDownBtn.setEnabled(bln); downBtn.setEnabled(bln); rightDownBtn.setEnabled(bln); zoomAddBtn.setEnabled(bln); zoomDecBtn.setEnabled(bln); focusAddBtn.setEnabled(bln); focusDecBtn.setEnabled(bln); irisAddBtn.setEnabled(bln); irisDecBtn.setEnabled(bln); speedComboBox.setEnabled(bln); realPlayWindow.setEnabled(bln); chnComboBox.setEnabled(bln); streamComboBox.setEnabled(bln); realplayBtn.setEnabled(bln); } /* * 登录 */ private LoginPanel loginPanel; /* * 预览 */ private RealPanel realPanel; private JPanel realplayPanel; private Panel realPlayWindow; private Panel channelPanel; private JLabel chnlabel; private JComboBox chnComboBox; private JLabel streamLabel; private JComboBox streamComboBox; private JButton realplayBtn; private JButton snapBtn; /* * 抓图与云台 */ private PTZ_PICPanel ptz_picPanel; private PICPanel picPanel; private JPanel pictureShowPanel; private JPanel snapPanel; private PaintPanel pictureShowWindow; /* * 云台 */ private PTZPanel ptzPanel; private JPanel directionPanel; private JPanel ptzCtrlPanel; private JButton leftUpBtn; private JButton upBtn; private JButton rightUpBtn; private JButton leftBtn; private JButton rightBtn; private JButton leftDownBtn; private JButton downBtn; private JButton rightDownBtn; private JComboBox speedComboBox; private JLabel operateJLabel; private JButton zoomAddBtn; private JButton zoomDecBtn; private JButton focusAddBtn; private JButton focusDecBtn; private JButton irisAddBtn; private JButton irisDecBtn; } public class PTZControl { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { PTZControlFrame demo = new PTZControlFrame(); demo.setVisible(true); } }); } }