谁能帮我啊!网络方面的!
我已经写好单机的程序了 需要变成网络版的 就是两个一模一样的单机程序连接起来执行的程序 我做的是一个单机版的drah and drop和画版的 程序 怎么把两个单机版连接起来一个server 一个是client 使的 在任何一个上面drag图片的时候能同时显示,点一边上的clear reload等button 都能在两边都反映出来 还有就是画版画画的时候也能两个上面都显示出画的内容 就好象netmeeting一样 我把单机的贴出来 谁能帮我改写成网络版的啊 自己写的总是出错! 万分感激啊!
Dnd Class:
import java.awt.dnd.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.io.*;
import java.net.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import JavaProject.lib.WhiteboardPanel;
import JavaProject.lib.TabbedPanel;
public class DnD extends JFrame implements ActionListener {
private WhiteboardPanel whiteboard;
private TabbedPanel currentPanel;
private JPanel ToolBar, Panel = new JPanel( );
private JTabbedPane tabbedPane;
private JButton jback, jforward, jload, jclear, jnew;
protected ImageIcon[] imagePick = new ImageIcon[25];
public ImageIcon cimage;
// TabbedPaneWebBrowser constructor
public DnD()
{
super( "Whiteboard and Drag&Drap Window" );
// create first browser tab
tabbedPane = new JTabbedPane();
createNewTab();
//Set the default window close operation
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create the tabs
tabbedPane.setSize(800, 600);
//Create toolbar
ToolBar = new JPanel();
ToolBar.setLayout(new GridLayout(1, 5));
ToolBar.add(jback = new JButton("Back"));
ToolBar.add(jforward = new JButton("Forward"));
ToolBar.add(jload = new JButton("Reload"));
ToolBar.add(jclear = new JButton("Clear"));
ToolBar.add(jnew = new JButton("New"));
//Create instance of whiteboard
whiteboard = new WhiteboardPanel();
whiteboard.setBackground( Color.WHITE );
whiteboard.setLayout(new BorderLayout());
//Set contentPane
this.getContentPane().setLayout(new GridLayout(1, 2));
this.getContentPane().add(whiteboard);
this.getContentPane().add(tabbedPane);
whiteboard.add(ToolBar, BorderLayout.NORTH);
// Button actions
jload.addActionListener(this);
jback.addActionListener(this);
jforward.addActionListener(this);
jclear.addActionListener(this);
jnew.addActionListener(this);
// Set DropTarget on currentPanel
tabbedPane.setDropTarget( new DropTarget( currentPanel,
DnDConstants.ACTION_COPY, new DropTargetHandler() ) );
}
private void createNewTab()
{
// create JPanel to contain tabbedPane
Panel = new JPanel( );
tabbedPane.addTab( "Tab " + tabbedPane.getTabCount(), Panel);
}
// inner class to handle DropTargetEvents
private class DropTargetHandler implements DropTargetListener {
// handle drop operation
public void drop( DropTargetDropEvent event )
{
// get dropped Transferable object
Transferable transferable = event.getTransferable();
// if Transferable is a List of Files, accept drop
if ( transferable.isDataFlavorSupported(
DataFlavor.javaFileListFlavor ) ) {
// accept the drop operation to copy the object
event.acceptDrop( DnDConstants.ACTION_COPY );
// process list of files and display each in browser
try {
// get List of Files
java.util.List fileList =
( java.util.List ) transferable.getTransferData(
DataFlavor.javaFileListFlavor );
Iterator iterator = fileList.iterator();
while ( iterator.hasNext() ) {
File file = ( File ) iterator.next();
ImageIcon dragImage = new ImageIcon(file.toURL());
int selIndex = tabbedPane.getSelectedIndex();
currentPanel = new TabbedPanel();
tabbedPane.setComponentAt(selIndex, currentPanel);
imagePick[selIndex] = currentPanel.displayTabImage(dragImage);
//imagePick[selIndex]=currentPanel.displayTabImage(dragImage);
//imagePick[selIndex]=currentPanel.paint(dragImage);
}
// indicate successful drop
event.dropComplete( true );
}
// handle exception if DataFlavor not supported
catch ( UnsupportedFlavorException flavorException ) {
flavorException.printStackTrace();
event.dropComplete( false );
}
// handle exception reading Transferable data
catch ( IOException ioException ) {
ioException.printStackTrace();
event.dropComplete( false );
}
}
// if dropped object is not file list, reject drop
else
event.rejectDrop();
}
// handle drag operation entering DropTarget
public void dragEnter( DropTargetDragEvent event )
{
// if data is javaFileListFlavor, accept drag for copy
if ( event.isDataFlavorSupported(
DataFlavor.javaFileListFlavor ) )
event.acceptDrag( DnDConstants.ACTION_COPY );
// reject all other DataFlavors
else
event.rejectDrag();
}
// invoked when drag operation exits DropTarget
public void dragExit( DropTargetEvent event ) {}
// invoked when drag operation occurs over DropTarget
public void dragOver( DropTargetDragEvent event ) {}
// invoked if dropAction changes (e.g., from COPY to LINK)
public void dropActionChanged( DropTargetDragEvent event )
{}
}
public void actionPerformed(ActionEvent e) {
int selTab = tabbedPane.getSelectedIndex();
int NewTab = 0;
if (e.getSource() == jnew) {
createNewTab();
NewTab = tabbedPane.getTabCount()-1;
tabbedPane.setSelectedIndex(NewTab);
}
if (e.getSource() == jload)
whiteboard.displayImage(imagePick[selTab]);
if (e.getSource() == jback) {
selTab = selTab-1;
tabbedPane.setSelectedIndex(selTab);
}
if (e.getSource() == jforward) {
selTab = selTab+1;
tabbedPane.setSelectedIndex(selTab);
}
if (e.getSource() == jclear) {
//whiteboard.removeAll();
cimage = new ImageIcon( getClass().getResource(
"images/pixel.gif" ) );
whiteboard.clearwhiteboard(cimage);
repaint();
}
}
public static void main( String args[] )
{
DnD browser = new DnD();
browser.setDefaultCloseOperation( EXIT_ON_CLOSE );
browser.setSize( 800, 600 );
browser.setVisible( true );
}
}