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

📄 objectbrowser.groovy

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 GROOVY
字号:
package groovy.inspect.swinguiimport java.awt.*import javax.swing.*import groovy.swing.SwingBuilderimport groovy.inspect.Inspector/**A little GUI to show some of the Inspector capabilities.Starting this script opens the ObjectBrowser on "some String".Use it in groovysh or groovyConsole to inspect your object ofinterest with<code>ObjectBrowser.inspect(myObject)</code>.@author Dierk Koenig**/class ObjectBrowser {        def inspector    def swing, frame, fieldTable, methodTable, itemTable, mapTable    static void main(args) {        inspect("some String")    }    static void inspect(objectUnderInspection){        def browser = new ObjectBrowser()        browser.inspector = new Inspector(objectUnderInspection)        browser.run()    }        void run() {        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())        swing = new SwingBuilder()                frame = swing.frame(title:'Groovy Object Browser', location:[200,200], size:[800,600],                defaultCloseOperation:WindowConstants.DISPOSE_ON_CLOSE) {                            menuBar {                menu(text:'Help') {                    menuItem() {action(name:'About', closure: this.&showAbout)}                }            }            panel() {                borderLayout()                panel(  name:"Class Info",                        border: BorderFactory.createEmptyBorder(5,10,5,10),                        constraints:BorderLayout.NORTH) {                    flowLayout(alignment:FlowLayout.LEFT)                    def props = inspector.classProps                    def classLabel = '<html>' + props.join('<br>')                    label(classLabel)                }                tabbedPane(constraints:BorderLayout.CENTER){                    if (inspector.object instanceof Collection) {	                    scrollPane(name: ' Collection data ') {	                        itemTable = table() {	                        	int i = 0	                            def data = inspector.object.collect { val -> [i++, val] }	                            tableModel(list:data) {	                                closureColumn(header:'Index', read:{it[0]})	                                closureColumn(header:'Value', read:{it[1]})	                            }	                        }	                    }                    }                    if (inspector.object instanceof Map) {	                    scrollPane(name: ' Map data ') {	                        itemTable = table() {	                        	int i = 0	                            def data = inspector.object.collect { key, val -> [i++, key, val] }	                            tableModel(list:data) {	                                closureColumn(header:'Index', read:{it[0]})	                                closureColumn(header:'Key',   read:{it[1]})	                                closureColumn(header:'Value', read:{it[2]})	                            }	                        }	                    }                    }                    scrollPane(name: ' Public Fields and Properties ') {                        fieldTable = table() {                            def data = Inspector.sort(inspector.publicFields.toList())                            data.addAll(Inspector.sort(inspector.propertyInfo.toList()))                            tableModel(list:data) {                                closureColumn(header:'Name',        read:{it[Inspector.MEMBER_NAME_IDX]})                                closureColumn(header:'Value',       read:{it[Inspector.MEMBER_VALUE_IDX]})                                closureColumn(header:'Type',        read:{it[Inspector.MEMBER_TYPE_IDX]})                                closureColumn(header:'Origin',      read:{it[Inspector.MEMBER_ORIGIN_IDX]})                                closureColumn(header:'Modifier',    read:{it[Inspector.MEMBER_MODIFIER_IDX]})                                closureColumn(header:'Declarer',    read:{it[Inspector.MEMBER_DECLARER_IDX]})                            }                        }                    }                    scrollPane(name:' (Meta) Methods ' ) {                        methodTable = table() {                            def data = Inspector.sort(inspector.methods.toList())                            data.addAll(Inspector.sort(inspector.metaMethods.toList()))                            tableModel(list:data) {                                closureColumn(header:'Name',        read:{it[Inspector.MEMBER_NAME_IDX]})                                closureColumn(header:'Params',      read:{it[Inspector.MEMBER_PARAMS_IDX]})                                closureColumn(header:'Type',        read:{it[Inspector.MEMBER_TYPE_IDX]})                                closureColumn(header:'Origin',      read:{it[Inspector.MEMBER_ORIGIN_IDX]})                                closureColumn(header:'Modifier',    read:{it[Inspector.MEMBER_MODIFIER_IDX]})                                closureColumn(header:'Declarer',    read:{it[Inspector.MEMBER_DECLARER_IDX]})                                closureColumn(header:'Exceptions',  read:{it[Inspector.MEMBER_EXCEPTIONS_IDX]})                            }                        }                    }                }            }        }                // Add a bit of formatting        addSorter(itemTable)        addSorter(mapTable)        addSorter(fieldTable)        addSorter(methodTable)                frame.show()        frame.toFront()    }        void addSorter(table) {    	if (table != null) {	    	def sorter = new TableSorter(table.model)    		table.model = sorter    		sorter.addMouseListenerToHeaderInTable(table)    	}    }        void showAbout(EventObject evt) {         def pane = swing.optionPane()         // work around GROOVY-1048         pane.setMessage('An interactive GUI to explore object capabilities.')         def dialog = pane.createDialog(frame, 'About Groovy Object Browser')         dialog.show()    }}

⌨️ 快捷键说明

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