package onlyfun.caterpillar.netapp;
import onlyfun.caterpillar.simplenet.capturescreen.SimpleRemoteScreenCaptureClient;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RemoteScreenCaptureClientUI extends JFrame {
private ImageIcon logobIcon, logosIcon, screenIcon;
private JLabel showScreenLabel;
private Panel serverInfoPanel;
private TextField serverAddr, serverPort;
private JMenuItem menuConnect, menuDisConnect;
private JRadioButtonMenuItem itemLowQuality, itemMediumQuality, itemHighQuality;
private JRadioButtonMenuItem itemLowRefresh, itemMediumRefresh, itemHighRefresh;
private SimpleRemoteScreenCaptureClient remoteScreenClient;
private int quality = 5;
private int refresh = 1000;
public RemoteScreenCaptureClientUI() {
super("Remote Screen Capture Client");
setUpUIComponent();
setUpEventListener();
setVisible(true);
}
private void setUpUIComponent() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
JMenu functionMenu = new JMenu("Run");
menuConnect = new JMenuItem("Connect");
menuDisConnect = new JMenuItem("Disconnect");
menuDisConnect.setEnabled(false);
functionMenu.add(menuConnect);
functionMenu.add(menuDisConnect);
menuBar.add(functionMenu);
ButtonGroup qualityGroup = new ButtonGroup();
itemLowQuality = new JRadioButtonMenuItem("Low quality");
itemMediumQuality = new JRadioButtonMenuItem("Medium quality");
itemHighQuality = new JRadioButtonMenuItem("High quality");
itemMediumQuality.setSelected(true);
qualityGroup.add(itemLowQuality);
qualityGroup.add(itemMediumQuality);
qualityGroup.add(itemHighQuality);
JMenu qualityMenu = new JMenu("Quality");
qualityMenu.add(itemLowQuality);
qualityMenu.add(itemMediumQuality);
qualityMenu.add(itemHighQuality);
menuBar.add(qualityMenu);
ButtonGroup refreshGroup = new ButtonGroup();
itemLowRefresh = new JRadioButtonMenuItem("Low refresh");
itemMediumRefresh = new JRadioButtonMenuItem("Medium refresh");
itemHighRefresh = new JRadioButtonMenuItem("High refresh");
itemMediumRefresh.setSelected(true);
refreshGroup.add(itemLowRefresh);
refreshGroup.add(itemMediumRefresh);
refreshGroup.add(itemHighRefresh);
JMenu refreshMenu = new JMenu("Refresh");
refreshMenu.add(itemLowRefresh);
refreshMenu.add(itemMediumRefresh);
refreshMenu.add(itemHighRefresh);
menuBar.add(refreshMenu);
setJMenuBar(menuBar);
logobIcon = new ImageIcon(RemoteScreenCaptureClientUI.class.getResource("logob.jpg"));
logosIcon = new ImageIcon(RemoteScreenCaptureClientUI.class.getResource("logos.gif"));
screenIcon = new ImageIcon(logobIcon.getImage());
showScreenLabel = new JLabel(screenIcon, SwingConstants.CENTER);
JScrollPane scrollPane = new JScrollPane(showScreenLabel,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(scrollPane);
serverInfoPanel = new Panel();
serverAddr = new TextField(10);
serverPort = new TextField(10);
serverInfoPanel.add(new JLabel("address "));
serverInfoPanel.add(serverAddr);
serverInfoPanel.add(new JLabel("port "));
serverInfoPanel.add(serverPort);
setSize(screenIcon.getImage().getWidth(this) + 100,
screenIcon.getImage().getHeight(this) + 100);
}
private void setUpEventListener() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menuConnect.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showOptionDialog(null,
serverInfoPanel, "Server Info.", JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, logosIcon, null, null);
remoteScreenClient = new SimpleRemoteScreenCaptureClient();
remoteScreenClient.setImageQuality(quality);
menuConnect.setEnabled(false);
menuDisConnect.setEnabled(true);
Thread thread = new Thread(new Runnable() {
public void run() {
String message = null;
try {
remoteScreenClient.connectionToServer(serverAddr.getText(),
Integer.parseInt(serverPort.getText()));
Image image = remoteScreenClient.getImageFromServer();
setSize(image.getWidth(null), image.getWidth(null));
while((image = remoteScreenClient.getImageFromServer()) != null) {
screenIcon.setImage(image);
repaint();
Thread.sleep(refresh);
}
}
catch(Exception ex) {
message = ex.getMessage();
}
finally {
JOptionPane.showMessageDialog(null, message,
"info", JOptionPane.INFORMATION_MESSAGE);
menuConnect.setEnabled(true);
menuDisConnect.setEnabled(false);
}
}
});
thread.start();
}
}
);
menuDisConnect.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
remoteScreenClient.closeConnection();
menuConnect.setEnabled(true);
menuDisConnect.setEnabled(false);
screenIcon.setImage(logobIcon.getImage());
setSize(screenIcon.getImage().getWidth(null) + 100,
screenIcon.getImage().getHeight(null) + 100);
setVisible(false);
setVisible(true);
}
}
);
ItemListener qualityItemListener =
new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(itemLowQuality.isSelected()) {
quality = 1;
if(remoteScreenClient != null) {
remoteScreenClient.setImageQuality(1);
}
}
else if(itemMediumQuality.isSelected()) {
quality = 5;
if(remoteScreenClient != null) {
remoteScreenClient.setImageQuality(5);
}
}
else if(itemHighQuality.isSelected()) {
quality = 9;
if(remoteScreenClient != null) {
remoteScreenClient.setImageQuality(9);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java 编程的vnc
共9个文件
java:7个
jpg:1个
gif:1个
需积分: 9 15 下载量 142 浏览量
2009-06-24
09:17:36
上传
评论
收藏 15KB ZIP 举报
温馨提示
用java編程的vnc 可以查看遠端在做什麼事。
资源推荐
资源详情
资源评论
收起资源包目录
src.zip (9个子文件)
src
onlyfun
caterpillar
simplenet
SimpleConnectionServer.java 1KB
SimpleConnectionClient.java 1KB
capturescreen
SimpleScreenCaptureServer.java 2KB
SimpleRemoteScreenCaptureClient.java 1KB
netapp
SimpleScreenCaptureServerDemo.java 1KB
logob.jpg 7KB
logos.gif 1KB
RemoteScreenCaptureClientUI.java 9KB
tool
image
ScreenCaptureHelper.java 2KB
共 9 条
- 1
资源评论
jasonsho
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功