?? registryexplorerframe.java
字號:
package apibook.c8.s3;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.rmi.*;//測試類rmi.registry包public class RegistryExplorerFrame extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); private JTextArea _resultsArea; private JTextField _portTextField; private JButton _queryRegistryButton; //Construct the frame public RegistryExplorerFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("RegistryExplorer"); buildGUI(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } }//初始化圖形界面 private void buildGUI() { JPanel mainPanel = new JPanel(new BorderLayout()); _resultsArea = new JTextArea(); mainPanel.add(new JScrollPane(_resultsArea), BorderLayout.CENTER); _queryRegistryButton = new JButton("Check Registry Contents"); _queryRegistryButton.addActionListener(new QueryRegistry()); mainPanel.add(_queryRegistryButton, BorderLayout.SOUTH); getContentPane().add(mainPanel); setSize(250, 200); } private void displayInformationForName(String name) throws Exception { Object value = Naming.lookup(name);//查找遠程對象 if (null == value) { _resultsArea.append("Server named " + name + " is not in registry\n"); return; } //獲取接口 Collection interfaces = getRemoteInterfacesForObject(value); if (null == interfaces) { _resultsArea.append("Object named " + name + " is not a server\n"); return; } _resultsArea.append("Server named " + name + " implements the following remote interfaces\n"); Iterator i = interfaces.iterator(); while (i.hasNext()) {//輸出結果 _resultsArea.append("\t" + i.next() + "\n"); } return; }//查找對象的接口 private Collection getRemoteInterfacesForObject(Object object) { Class objectType = object.getClass(); Class[] interfaces = objectType.getInterfaces(); Class remoteInterface = Remote.class; if ((null == interfaces) || (0 == interfaces.length)) { return null; } ArrayList returnValue = new ArrayList(); int counter; for (counter = 0; counter < interfaces.length; counter++) { if (remoteInterface.isAssignableFrom(interfaces[counter])) { returnValue.add(interfaces[counter]); } } return returnValue; }//查詢注冊表 private class QueryRegistry implements ActionListener { public void actionPerformed(ActionEvent event) { try { String[] names = Naming.list("//localhost:1099");//注冊表列表 if ((null == names) || (0 == names.length)) { _resultsArea.setText("The Registry is Empty"); return; } _resultsArea.setText(""); int counter; for (counter = 0; counter < names.length; counter++) { displayInformationForName(names[counter]);//顯示 } } catch (Exception exception) { System.out.println(exception); exception.printStackTrace(); } } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -