📄 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 + -