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

📄 errordialog.java

📁 java插件系统源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * Prints detailed stack trace to the given buffer.
     * @param t exception instance, may be <code>null</code>
     * @param header stack trace caption
     * @param sb output text buffer
     */
    public static void printError(final Throwable t, final String header,
            final StringBuffer sb) {
        if (t == null) {
            return;
        }
        String nl = System.getProperty("line.separator"); //$NON-NLS-1$
        sb.append(nl).append(header).append(nl).append(nl);
        StackTraceElement[] stackTrace = t.getStackTrace();
        for (int i = 0; i < stackTrace.length; i++) {
            sb.append(stackTrace[i].toString()).append(nl);
        }
        Throwable next = t.getCause();
        printError(next, "Caused by " + next, sb); //$NON-NLS-1$
        if (t instanceof SQLException) {
            // Handle SQLException specifically.
            next = ((SQLException) t).getNextException();
            printError(next, "Next exception: " + next, sb); //$NON-NLS-1$
        } else if (t instanceof InvocationTargetException) {
            // Handle InvocationTargetException specifically.
            next = ((InvocationTargetException) t).getTargetException();
            printError(next, "Target exception: " + next, sb); //$NON-NLS-1$
        }
    }

    private javax.swing.JPanel jContentPane = null;
    private JPanel jPanel = null;
    private JLabel messageLabel = null;
    private JLabel errorLabel = null;
    private JPanel jPanel1 = null;
    private JButton closeButton = null;
    private JScrollPane jScrollPane = null;
    JTextArea jTextArea = null;
    private JTabbedPane jTabbedPane = null;
    private JPanel jPanelInfo = null;
    private JScrollPane jScrollPane2 = null;
    private JList jList = null;
    private JLabel dataLabel = null;
    boolean yesBtnPressed = false;
    private JButton yesButton = null;

    private ErrorDialog(final Frame owner, final String title, final String message,
            final Object data, final Throwable t, boolean yesNo) {
        super((owner != null) ? owner : JOptionPane.getRootFrame());
        initialize();
        setLocationRelativeTo(getOwner());
        jTabbedPane.setTitleAt(0, ResourceManager.getMessage(Boot.PACKAGE_NAME,
                "infoTabLabel")); //$NON-NLS-1$
        jTabbedPane.setTitleAt(1, ResourceManager.getMessage(Boot.PACKAGE_NAME,
                "detailsTabLabel")); //$NON-NLS-1$
        setTitle(title);
        messageLabel.setText(message);
        if (t != null) {
            errorLabel.setText(ResourceManager.getMessage(Boot.PACKAGE_NAME,
                    "errorLabel", t)); //$NON-NLS-1$
        } else {
            getJPanel().remove(errorLabel);
        }
        if (data instanceof Collection) {
            DefaultListModel model = new DefaultListModel();
            for (Iterator it = ((Collection) data).iterator(); it.hasNext();) {
                model.addElement(it.next());
            }
            jList.setModel(model);
            getJPanel().remove(dataLabel);
        } else if (data instanceof Object[]) {
            DefaultListModel model = new DefaultListModel();
            for (int i = 0; i < ((Object[]) data).length; i++) {
                model.addElement(((Object[]) data)[i]);
            }
            jList.setModel(model);
            getJPanel().remove(dataLabel);
        } else if (data != null) {
            dataLabel.setText(data.toString());
            getJPanelInfo().remove(getJScrollPane());
        } else {
            getJPanel().remove(dataLabel);
            getJPanelInfo().remove(getJScrollPane());
        }
        jTextArea.setText(getErrorDetails(t));
        jTextArea.setCaretPosition(0);
        if (yesNo) {
            closeButton.setText(ResourceManager.getMessage(Boot.PACKAGE_NAME,
                    "noLabel")); //$NON-NLS-1$
            yesButton.setText(ResourceManager.getMessage(Boot.PACKAGE_NAME,
                    "yesLabel")); //$NON-NLS-1$
        } else {
            getJPanel1().remove(yesButton);
            closeButton.setText(ResourceManager.getMessage(Boot.PACKAGE_NAME,
                    "closeLabel")); //$NON-NLS-1$
        }
    }

    private void initialize() {
        this.setDefaultCloseOperation(
                javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        this.setModal(true);
        this.setTitle("An error has occurred"); //$NON-NLS-1$
        this.setSize(460, 280);
        this.setContentPane(getJContentPane());
        getRootPane().setWindowDecorationStyle(JRootPane.ERROR_DIALOG);
        getRootPane().setDefaultButton(closeButton);
        getRootPane().getInputMap(
                JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
                "doCloseDefault"); //$NON-NLS-1$
        getRootPane().getActionMap().put("doCloseDefault", //$NON-NLS-1$
                new AbstractAction() {
            private static final long serialVersionUID = -9167454634726502084L;

            public void actionPerformed(final ActionEvent evt) {
                dispose();
            }
        });
        getRootPane().setDefaultButton(getCloseButton());
    }

    private javax.swing.JPanel getJContentPane() {
        if (jContentPane == null) {
            BorderLayout borderLayout2 = new BorderLayout();
            jContentPane = new javax.swing.JPanel();
            jContentPane.setLayout(borderLayout2);
            borderLayout2.setVgap(2);
            jContentPane.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
            jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);
        }
        return jContentPane;
    }

    private JPanel getJPanel() {
        if (jPanel == null) {
            dataLabel = new JLabel();
            dataLabel.setText("JLabel"); //$NON-NLS-1$
            errorLabel = new JLabel();
            messageLabel = new JLabel();
            jPanel = new JPanel();
            jPanel.setLayout(new BoxLayout(getJPanel(), BoxLayout.Y_AXIS));
            messageLabel.setText("JLabel"); //$NON-NLS-1$
            errorLabel.setText("JLabel"); //$NON-NLS-1$
            jPanel.add(messageLabel, null);
            jPanel.add(errorLabel, null);
            jPanel.add(dataLabel, null);
        }
        return jPanel;
    }

    private JPanel getJPanel1() {
        if (jPanel1 == null) {
            FlowLayout flowLayout = new FlowLayout();
            flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);
            jPanel1 = new JPanel();
            jPanel1.setLayout(flowLayout);
            jPanel1.add(getYesButton(), null);
            jPanel1.add(getCloseButton(), null);
        }
        return jPanel1;
    }

    private JButton getCloseButton() {
        if (closeButton == null) {
            closeButton = new JButton();
            closeButton.setText("Close"); //$NON-NLS-1$
            closeButton.setSelected(true);
            closeButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    dispose();
                }
            });
        }
        return closeButton;
    }

    private JScrollPane getJScrollPane() {
        if (jScrollPane == null) {
            jScrollPane = new JScrollPane();
            jScrollPane.setViewportView(getJList());
        }
        return jScrollPane;
    }

    private JTextArea getJTextArea() {
        if (jTextArea == null) {
            jTextArea = new JTextArea();
            jTextArea.setBackground(java.awt.SystemColor.control);
            jTextArea.setEditable(false);
            jTextArea.setOpaque(false);
            jTextArea.addMouseListener(new MouseAdapter() {
                public void mousePressed(final MouseEvent evt) {
                    if (!evt.isPopupTrigger()) {
                        return;
                    }
                    copyText();
                }
                
                public void mouseReleased(final MouseEvent evt) {
                    if (!evt.isPopupTrigger()) {
                        return;
                    }
                    copyText();
                }
                
                private void copyText() {
                    if (jTextArea.getSelectedText() != null) {
                        jTextArea.copy();
                        return;
                    }
                    jTextArea.setSelectionStart(0);
                    jTextArea.setSelectionEnd(jTextArea.getText().length());
                    jTextArea.copy();
                    jTextArea.setSelectionEnd(0);
                }
            });
        }
        return jTextArea;
    }

    private JTabbedPane getJTabbedPane() {
        if (jTabbedPane == null) {
            jTabbedPane = new JTabbedPane();
            jTabbedPane.addTab("Info", null, getJPanelInfo(), null); //$NON-NLS-1$
            jTabbedPane.addTab("Details", null, getJScrollPane2(), null); //$NON-NLS-1$
        }
        return jTabbedPane;
    }

    private JPanel getJPanelInfo() {
        if (jPanelInfo == null) {
            jPanelInfo = new JPanel();
            jPanelInfo.setLayout(new BorderLayout());
            jPanelInfo.add(getJPanel(), java.awt.BorderLayout.NORTH);
            jPanelInfo.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
        }
        return jPanelInfo;
    }

    private JScrollPane getJScrollPane2() {
        if (jScrollPane2 == null) {
            jScrollPane2 = new JScrollPane();
            jScrollPane2.setViewportView(getJTextArea());
        }
        return jScrollPane2;
    }

    private JList getJList() {
        if (jList == null) {
            jList = new JList();
        }
        return jList;
    }

    private JButton getYesButton() {
        if (yesButton == null) {
            yesButton = new JButton();
            yesButton.setText("Yes"); //$NON-NLS-1$
            yesButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    yesBtnPressed = true;
                    dispose();
                }
            });
        }
        return yesButton;
    }
} //  @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

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