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

📄 p2pdashboard.java

📁 基于jxta的peer端和peer组发现源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.lang.String;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.DefaultListSelectionModel;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import net.jxta.credential.AuthenticationCredential;
import net.jxta.document.StructuredDocument;
import net.jxta.document.MimeMediaType;
import net.jxta.discovery.DiscoveryService;
import net.jxta.exception.PeerGroupException;
import net.jxta.membership.Authenticator;
import net.jxta.membership.MembershipService;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupFactory;
import net.jxta.protocol.ModuleImplAdvertisement;
import net.jxta.protocol.PeerGroupAdvertisement;
import net.jxta.protocol.PeerAdvertisement;
import net.jxta.impl.protocol.PeerGroupAdv;
import net.jxta.impl.protocol.PeerAdv;
import net.jxta.impl.id.UUID.PeerID;
import net.jxta.impl.id.UUID.PeerGroupID;

/*
P2P Dashboard application
*/
public class P2PDashboard extends JFrame {
    //frame reference for JOptionPane message dialogs
    private JFrame frame;

    //group section
    private JScrollPane groupScrollPane;
    private JList groupList;
    private Hashtable groupHT;
    private JTextField groupAddTextField;
    private JButton groupAddButton;
    private JButton groupFlushButton;
    private JButton groupRemoveButton;
    private JRadioButton groupLocalRadioButton;
    private JRadioButton groupRemoteRadioButton;
    private ButtonGroup groupDiscoveryButtonGroup;
    private JButton groupDiscoveryButton;

    //peer section
    private JScrollPane peerScrollPane;
    private JList peerList;
    private JTextField peerAddTextField;
    private JButton peerAddButton;
    private JButton peerFlushButton;
    private JCheckBox peerCheckBox;
    private JButton peerRemoveButton;
    private JRadioButton peerLocalRadioButton;
    private JRadioButton peerRemoteRadioButton;
    private ButtonGroup peerDiscoveryButtonGroup;
    private JButton peerDiscoveryButton;
    private boolean displayPeerGroups;

    //Default NetPeerGroup and discovery service
    private static PeerGroup netPeerGroup;
    private DiscoveryService discovery;
    private String defaultGroupName;
    private String defaultPeerName;

    //peer and group discovery event handlers
    private PeerDiscovery peerDiscovery;
    private GroupDiscovery groupDiscovery;

    /*********************/

    /*Dashboard Methods */

    /*********************/

    /*
    *Command line arguments
    */
    public static void main(String[] args) {
        P2PDashboard p2p = new P2PDashboard();
        p2p.show();


        //setup localPeer in NetPeerGroup
        p2p.initializeNetPeerGroup();


        //prepare peer and group discovery services
        p2p.initializeDiscovery();
    }

    /*
    *Create a new P2PDashboard frame.
    */
    public P2PDashboard() {
        frame = this;


        //group
        groupScrollPane = new JScrollPane();
        groupList = new JList(new SortedListModel());
        groupHT = new Hashtable();
        groupAddTextField = new JTextField();
        groupAddButton = new JButton();
        groupFlushButton = new JButton();
        groupRemoveButton = new JButton();
        groupLocalRadioButton = new JRadioButton();
        groupRemoteRadioButton = new JRadioButton();
        groupDiscoveryButtonGroup = new ButtonGroup();
        groupDiscoveryButton = new JButton();


        //peer
        peerScrollPane = new JScrollPane();
        peerList = new JList(new SortedListModel());
        peerAddTextField = new JTextField();
        peerAddButton = new JButton();
        peerFlushButton = new JButton();
        peerCheckBox = new JCheckBox();
        peerRemoveButton = new JButton();
        peerLocalRadioButton = new JRadioButton();
        peerRemoteRadioButton = new JRadioButton();
        peerDiscoveryButtonGroup = new ButtonGroup();
        peerDiscoveryButton = new JButton();
        displayPeerGroups = false;
        initializeGUIComponents();
        configureGroupEvents();
        configurePeerEvents();
    }

    /*
    *P2PDashboard uses this to setup GUI objects and
    *their properties.
    */
    private void initializeGUIComponents() {
        Container contentPane = getContentPane();
        Insets insets = contentPane.getInsets();
        contentPane.setLayout(null);


        //group section
        groupScrollPane.setViewportBorder(new TitledBorder("Groups"));
        groupScrollPane.setViewportView(groupList);
        contentPane.add(groupScrollPane);
        groupScrollPane.setBounds(10 + insets.left, 10 + insets.top, 250, 230);
        groupAddTextField.setToolTipText("Add a new group");
        contentPane.add(groupAddTextField);
        groupAddTextField.setBounds(10 + insets.left, 250 + insets.top, 140, 20);
        groupAddButton.setText("Add ");
        groupAddButton.setToolTipText("Add a new group");
        contentPane.add(groupAddButton);
        groupAddButton.setBounds(170 + insets.left, 250 + insets.top, 90, 20);
        groupFlushButton.setText("Flush ");
        groupFlushButton.setToolTipText("Flush local group cache");
        contentPane.add(groupFlushButton);
        groupFlushButton.setBounds(10 + insets.left, 280 + insets.top, 90, 20);
        groupRemoveButton.setText("Remove ");
        groupRemoveButton.setToolTipText("Remove a group");
        contentPane.add(groupRemoveButton);
        groupRemoveButton.setBounds(170 + insets.left, 280 + insets.top, 90, 20);
        groupLocalRadioButton.setSelected(true);
        groupLocalRadioButton.setText("Local ");
        groupLocalRadioButton.setToolTipText("Search for local groups");
        contentPane.add(groupLocalRadioButton);
        groupLocalRadioButton.setBounds(10 + insets.left, 310 + insets.top, 60, 
                                        20);
        groupRemoteRadioButton.setText("Remote ");
        groupRemoteRadioButton.setToolTipText("Search for remote groups");
        contentPane.add(groupRemoteRadioButton);
        groupRemoteRadioButton.setBounds(90 + insets.left, 310 + insets.top, 70, 
                                         20);
        groupDiscoveryButtonGroup.add(groupLocalRadioButton);
        groupDiscoveryButtonGroup.add(groupRemoteRadioButton);
        groupDiscoveryButton.setText("Discover");
        groupDiscoveryButton.setToolTipText("Find groups");
        contentPane.add(groupDiscoveryButton);
        groupDiscoveryButton.setBounds(170 + insets.left, 310 + insets.top, 90, 
                                       20);


        //peer section
        peerScrollPane.setViewportBorder(new TitledBorder("Peers"));
        peerScrollPane.setViewportView(peerList);
        contentPane.add(peerScrollPane);
        peerScrollPane.setBounds(290 + insets.left, 10 + insets.top, 250, 230);
        peerAddTextField.setToolTipText("Add a new peer");
        contentPane.add(peerAddTextField);
        peerAddTextField.setBounds(290 + insets.left, 250 + insets.top, 140, 20);
        peerAddButton.setText("Add ");
        peerAddButton.setToolTipText("Add a new peer");
        contentPane.add(peerAddButton);
        peerAddButton.setBounds(450 + insets.left, 250 + insets.top, 90, 20);
        peerFlushButton.setText("Flush ");
        peerFlushButton.setToolTipText("Flush local peer cache");
        contentPane.add(peerFlushButton);
        peerFlushButton.setBounds(290 + insets.left, 280 + insets.top, 90, 20);
        peerCheckBox.setSelected(false);

⌨️ 快捷键说明

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