📄 jmsdrawdemo.java
字号:
offScreenGraphics = offScreenImage.getGraphics();
//所有点
Enumeration pts = points.elements();
while(pts.hasMoreElements()) {
//显示所有点
Point pt = (Point) pts.nextElement();
offScreenGraphics.drawImage(image, ((pt.x * d.width) / 1000) - (imageWidth/2),
((pt.y * d.height) / 1000) -(imageHeight/2), this);
}
pts = pointsSent.elements();
while(pts.hasMoreElements()) {
Point pt = (Point) pts.nextElement();
offScreenGraphics.setColor(Color.darkGray);
offScreenGraphics.fillOval(((pt.x * d.width) / 1000)-5, ((pt.y * d.height) / 1000)-5, 10, 10);
}
}
//显示整个位图
g.drawImage(offScreenImage, 0, 0, this);
}
/**
* 获取坐标
*/
public Dimension getPreferredSize()
{
return new Dimension(300,300);
}
/*******************************************************************
* 更新位图
*******************************************************************/
private void updateImage(Point pt)
{
points.addElement(pt);
pointsSent.removeElement(pt);
if (offScreenGraphics != null) {
offScreenGraphics.drawImage(image, ((pt.x * d.width) / 1000) - (imageWidth/2),
((pt.y * d.height) / 1000) -(imageHeight/2), this);
}
repaint();
}
/*******************************************************************
* 响应鼠标按动事件
* @参数 e 鼠标事件
*******************************************************************/
public void mousePressed(MouseEvent e) {}
/*******************************************************************
* 鼠标点击时响应
* @参数 e 鼠标事件
*******************************************************************/
public void mouseClicked(MouseEvent e) {}
/*******************************************************************
* 鼠标进入时响应
* @参数 e 鼠标事件
*******************************************************************/
public void mouseEntered(MouseEvent e) {}
/*******************************************************************
* 鼠标出去时响应
* @参数 e 鼠标事件
*******************************************************************/
public void mouseExited(MouseEvent e) {}
/**
* 释放鼠标时相应
* @参数 e 鼠标事件
*/
public void mouseReleased(MouseEvent e)
{
int x = (e.getX() * 1000) / d.width;
int y = (e.getY() * 1000) / d.height;
if (isTransacted) {
commitButton.setEnabled(true);
rollbackButton.setEnabled(true);
}
offScreenGraphics.setColor(Color.darkGray);
offScreenGraphics.fillOval(e.getX() - 5, e.getY()-5, 10, 10);
publishPoint(x, y);
repaint();
}
private void setTransacted(boolean transacted)
{
if (transacted != isTransacted) {
if (! transacted) {
doRollback();
}
isTransacted = transacted;
}
}
/*******************************************************************
* 监听并响应按下按钮
* @参数 ev action 事件
*******************************************************************/
public void actionPerformed(ActionEvent ev)
{
if (ev.getSource() == transactedCheckBox) {
setTransacted(transactedCheckBox.isSelected());
return;
}
if (ev.getSource() == commitButton) {
doCommit();
return;
}
if (ev.getSource() == rollbackButton) {
doRollback();
return;
}
if (ev.getSource() == clearButton) {
publishClear();
return;
}
if (ev.getSource() == quitButton) {
exit();
}
}
//事务触发
private void doCommit()
{
try {
sessionTX.commit();
commitButton.setEnabled(false);
rollbackButton.setEnabled(false);
repaint();
} catch (JMSException jmse) {
jmse.printStackTrace();
}
}
private void doRollback()
{
try {
sessionTX.rollback();
pointsSent.removeAllElements();
commitButton.setEnabled(false);
rollbackButton.setEnabled(false);
offScreenImage = null;
repaint();
} catch (JMSException jmse) {
jmse.printStackTrace();
}
}
//清屏
private void clearScreen()
{
if (isTransacted) {
doRollback();
}
pointsSent.removeAllElements();
points.removeAllElements();
offScreenImage = null;
repaint();
}
//发送模式
private int deliveryMode()
{
return persistentCheckBox.isSelected()
? DeliveryMode.PERSISTENT
: DeliveryMode.NON_PERSISTENT;
}
/*******************************************************************
* 加载图像
* @参数 resourceName 资源名字
*******************************************************************/
public Image loadImage(String resourceName)
{
try {
java.net.URL url = getClass().getResource(resourceName);
java.awt.Toolkit tk = java.awt.Toolkit.getDefaultToolkit();
image = tk.createImage((java.awt.image.ImageProducer) url.getContent());
synchronized(this) {
imageWidth = image.getWidth(this);
imageHeight = image.getHeight(this);
if (imageWidth <= 0 || imageHeight <= 0) {
imageLoaded = false;
while(!imageLoaded) {
wait();
}
}
imageWidth = image.getWidth(this);
imageHeight = image.getHeight(this);
}
return image;
} catch(Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 更新位图
* @参数 image 要更新的位图
* @参数 infoFlags 信息标记
* @参数 x X 坐标
* @参数 y Y 坐标
* @参数 width 宽度
* @参数 width 高度
*/
public boolean imageUpdate(Image image, int infoFlags,
int x, int y, int width, int height)
{
if(image == this.image &&
(infoFlags & ImageObserver.ALLBITS) == ImageObserver.ALLBITS) {
synchronized(this) {
imageLoaded = true;
notify();
}
return false;
}
return true;
}
/*******************************************************************
* main() 方法
* @参数 argv[] WebLogic服务器URL
*******************************************************************/
public static void main(String argv [])
{
String url = null;
String durableSubscriberID = null;
String frameTitle = "JMSDrawDemo";
if (argv.length > 0) {
url = argv[0];
} else {
System.out.println("用法: java examples.jms.drawdemo.JMSDrawDemo <url> [DurableSubscriberID]");
System.exit(1);
}
if (argv.length > 1) {
durableSubscriberID = argv[1];
frameTitle += " ("+durableSubscriberID + ")";
}
//主窗口类
final JFrame frame = new JFrame(frameTitle);
frame.setForeground(Color.black);
frame.setBackground(Color.lightGray);
frame.getContentPane().setLayout(new BorderLayout());
try {
final JMSDrawDemo demo =
new JMSDrawDemo(frame, url, durableSubscriberID);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
demo.exit();
}
};
frame.addWindowListener(l);
} catch (NamingException ne) {
System.out.println("Error attaching to server, url=" + url);
System.exit(0);
} catch (JMSException jmse) {
jmse.printStackTrace();
System.exit(0);
}
frame.pack();
frame.setVisible(true);
}
// 返回JNDI初始化上下文
private static InitialContext getInitialContext(String url)
throws NamingException
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, url);
return new InitialContext(env);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -