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

📄 swinggui.java

📁 javascript语言的解释器源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        popup = new FilePopupMenu(this);        popup.addPopupMenuListener(this);        addMouseListener(this);        addKeyListener(this);        setFont(new Font("Monospaced", 0, 12));    }    void select(int pos) {        if (pos >= 0) {            try {                int line = getLineOfOffset(pos);                Rectangle rect = modelToView(pos);                if (rect == null) {                    select(pos, pos);                } else {                    try {                        Rectangle nrect =                            modelToView(getLineStartOffset(line + 1));                        if (nrect != null) {                            rect = nrect;                        }                    } catch (Exception exc) {                    }                    JViewport vp = (JViewport)getParent();                    Rectangle viewRect = vp.getViewRect();                    if (viewRect.y + viewRect.height > rect.y) {                        // need to scroll up                        select(pos, pos);                    } else {                        // need to scroll down                        rect.y += (viewRect.height - rect.height)/2;                        scrollRectToVisible(rect);                        select(pos, pos);                    }                }            } catch (BadLocationException exc) {                select(pos, pos);                //exc.printStackTrace();            }        }    }    public void mousePressed(MouseEvent e) {        checkPopup(e);    }    public void mouseClicked(MouseEvent e) {        checkPopup(e);        requestFocus();        getCaret().setVisible(true);    }    public void mouseEntered(MouseEvent e) {    }    public void mouseExited(MouseEvent e) {    }    public void mouseReleased(MouseEvent e) {        checkPopup(e);    }    private void checkPopup(MouseEvent e) {        if (e.isPopupTrigger()) {            popup.show(this, e.getX(), e.getY());        }    }    public void popupMenuWillBecomeVisible(PopupMenuEvent e) {    }    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {    }    public void popupMenuCanceled(PopupMenuEvent e) {    }    public void actionPerformed(ActionEvent e) {        int pos = viewToModel(new Point(popup.x, popup.y));        popup.setVisible(false);        String cmd = e.getActionCommand();        int line = -1;        try {            line = getLineOfOffset(pos);        } catch (Exception exc) {        }        if (cmd.equals("Set Breakpoint")) {            w.setBreakPoint(line + 1);        } else if (cmd.equals("Clear Breakpoint")) {            w.clearBreakPoint(line + 1);        } else if (cmd.equals("Run")) {            w.load();        }    }    public void keyPressed(KeyEvent e) {        switch (e.getKeyCode()) {        case KeyEvent.VK_BACK_SPACE:        case KeyEvent.VK_ENTER:        case KeyEvent.VK_DELETE:            e.consume();            break;        }    }    public void keyTyped(KeyEvent e) {        e.consume();    }    public void keyReleased(KeyEvent e) {        e.consume();    }}class MoreWindows extends JDialog implements ActionListener{    static final long serialVersionUID = 5177066296457377546L;    private String value = null;    private JList list;    Hashtable fileWindows;    JButton setButton;    JButton refreshButton;    JButton cancelButton;    public String showDialog(Component comp) {        value = null;        setLocationRelativeTo(comp);        setVisible(true);        return value;    }    private void setValue(String newValue) {        value = newValue;        list.setSelectedValue(value, true);    }    public void actionPerformed(ActionEvent e) {        String cmd = e.getActionCommand();        if (cmd.equals("Cancel")) {            setVisible(false);            value = null;        } else if (cmd.equals("Select")) {            value = (String)list.getSelectedValue();            setVisible(false);            JInternalFrame w = (JInternalFrame)fileWindows.get(value);            if (w != null) {                try {                    w.show();                    w.setSelected(true);                } catch (Exception exc) {                }            }        }    }    class MouseHandler extends MouseAdapter {        public void mouseClicked(MouseEvent e) {            if (e.getClickCount() == 2) {                setButton.doClick();            }        }    };    MoreWindows(JFrame frame, Hashtable fileWindows,                String title,                String labelText) {        super(frame, title, true);        this.fileWindows = fileWindows;        //buttons        cancelButton = new JButton("Cancel");        setButton = new JButton("Select");        cancelButton.addActionListener(this);        setButton.addActionListener(this);        getRootPane().setDefaultButton(setButton);        //dim part of the dialog        list = new JList(new DefaultListModel());        DefaultListModel model = (DefaultListModel)list.getModel();        model.clear();        //model.fireIntervalRemoved(model, 0, size);        Enumeration e = fileWindows.keys();        while (e.hasMoreElements()) {            String data = e.nextElement().toString();            model.addElement(data);        }        list.setSelectedIndex(0);        //model.fireIntervalAdded(model, 0, data.length);        setButton.setEnabled(true);        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);        list.addMouseListener(new MouseHandler());        JScrollPane listScroller = new JScrollPane(list);        listScroller.setPreferredSize(new Dimension(320, 240));        //XXX: Must do the following, too, or else the scroller thinks        //XXX: it's taller than it is:        listScroller.setMinimumSize(new Dimension(250, 80));        listScroller.setAlignmentX(LEFT_ALIGNMENT);        //Create a container so that we can add a title around        //the scroll pane.  Can't add a title directly to the        //scroll pane because its background would be white.        //Lay out the label and scroll pane from top to button.        JPanel listPane = new JPanel();        listPane.setLayout(new BoxLayout(listPane, BoxLayout.Y_AXIS));        JLabel label = new JLabel(labelText);        label.setLabelFor (list);        listPane.add(label);        listPane.add(Box.createRigidArea(new Dimension(0,5)));        listPane.add(listScroller);        listPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));        //Lay out the buttons from left to right.        JPanel buttonPane = new JPanel();        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));        buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));        buttonPane.add(Box.createHorizontalGlue());        buttonPane.add(cancelButton);        buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));        buttonPane.add(setButton);        //Put everything together, using the content pane's BorderLayout.        Container contentPane = getContentPane();        contentPane.add(listPane, BorderLayout.CENTER);        contentPane.add(buttonPane, BorderLayout.SOUTH);        pack();        addKeyListener(new KeyAdapter() {                public void keyPressed(KeyEvent ke) {                    int code = ke.getKeyCode();                    if (code == KeyEvent.VK_ESCAPE) {                        ke.consume();                        value = null;                        setVisible(false);                    }                }            });    }};class FindFunction extends JDialog implements ActionListener{    static final long serialVersionUID = 559491015232880916L;    private String value = null;    private JList list;    SwingGui debugGui;    JButton setButton;    JButton refreshButton;    JButton cancelButton;    public String showDialog(Component comp) {        value = null;        setLocationRelativeTo(comp);        setVisible(true);        return value;    }    private void setValue(String newValue) {        value = newValue;        list.setSelectedValue(value, true);    }    public void actionPerformed(ActionEvent e) {        String cmd = e.getActionCommand();        if (cmd.equals("Cancel")) {            setVisible(false);            value = null;        } else if (cmd.equals("Select")) {            if (list.getSelectedIndex() < 0) {                return;            }            try {                value = (String)list.getSelectedValue();            } catch (ArrayIndexOutOfBoundsException exc) {                return;            }            setVisible(false);            Dim.FunctionSource item = debugGui.dim.functionSourceByName(value);            if (item != null) {                Dim.SourceInfo si = item.sourceInfo();                String url = si.url();                int lineNumber = item.firstLine();                FileWindow w = debugGui.getFileWindow(url);                if (w == null) {                    debugGui.createFileWindow(si, lineNumber);                    w = debugGui.getFileWindow(url);                    w.setPosition(-1);                }                int start = w.getPosition(lineNumber-1);                int end = w.getPosition(lineNumber)-1;                w.textArea.select(start);                w.textArea.setCaretPosition(start);                w.textArea.moveCaretPosition(end);                try {                    w.show();                    debugGui.requestFocus();                    w.requestFocus();                    w.textArea.requestFocus();                } catch (Exception exc) {                }            }        }    }    class MouseHandler extends MouseAdapter {        public void mouseClicked(MouseEvent e) {            if (e.getClickCount() == 2) {                setButton.doClick();            }        }    };    FindFunction(SwingGui debugGui, String title, String labelText)    {        super(debugGui, title, true);        this.debugGui = debugGui;        cancelButton = new JButton("Cancel");        setButton = new JButton("Select");        cancelButton.addActionListener(this);        setButton.addActionListener(this);        getRootPane().setDefaultButton(setButton);        list = new JList(new DefaultListModel());        DefaultListModel model = (DefaultListModel)list.getModel();        model.clear();        String[] a = debugGui.dim.functionNames();        java.util.Arrays.sort(a);        for (int i = 0; i < a.length; i++) {            model.addElement(a[i]);        }        list.setSelectedIndex(0);        setButton.setEnabled(a.length > 0);        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);        list.addMouseListener(new MouseHandler());        JScrollPane listScroller = new JScrollPane(list);        listScroller.setPreferredSize(new Dimension(320, 240));        listScroller.setMinimumSize(new Dimension(250, 80));        listScroller.setAlignmentX(LEFT_ALIGNMENT);        //Create a container so that we can add a title around        //the scroll pane.  Can't add a title directly to the        //scroll pane because its background would be white.        //Lay out the label and scroll pane from top to button.        JPanel listPane = new JPanel();        listPane.setLayout(new BoxLayout(listPane, BoxLayout.Y_AXIS));        JLabel label = new JLabel(labelText);        label.setLabelFor (list);        listPane.add(label);        listPane.add(Box.createRigidArea(new Dimension(0,5)));        listPane.add(listScroller);        listPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));        //Lay out the buttons from left to right.        JPanel buttonPane = new JPanel();        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));        buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));        buttonPane.add(Box.createHorizontalGlue());        buttonPane.add(cancelButton);        buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));        buttonPane.add(setButton);        //Put everything together, using the content pane's BorderLayout.        Container contentPane = getContentPane();        contentPane.add(listPane, BorderLayout.CENTER);        contentPane.add(buttonPane, BorderLayout.SOUTH);        pack();        addKeyListener(new KeyAdapter() {                public void keyPressed(KeyEvent ke) {                    int code = ke.getKeyCode();                    if (code == KeyEvent.VK_ESCAPE) {                        ke.consume();                        value = null;                        setVisible(false);                    }                }            });    }};class FileHeader extends JPanel implements MouseListener{    static final long serialVersionUID = -2858905404778259127L;    private int pressLine = -1;    FileWindow fileWindow;    public void mouseEntered(MouseEvent e) {    }    public void mousePressed(MouseEvent e) {        Font font = fileWindow.textArea.getFont();        FontMetrics metrics = getFontMetrics(font);        int h = metrics.getHeight();        pressLine = e.getY() / h;    }    public void mouseClicked(MouseEvent e) {    }

⌨️ 快捷键说明

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