📄 staflogviewer.java
字号:
if (obj != null) { cellText = table.getValueAt(j,i).toString(); } BufferedReader reader = new BufferedReader(new StringReader(cellText)); String line; try { while ((line = reader.readLine()) != null) { data.addElement(line); } } catch(IOException ex) { ex.printStackTrace(); } finally { try { reader.close(); } catch (IOException ex) { ex.printStackTrace(); } } } catch(Exception ex) { ex.printStackTrace(); } } Enumeration e = data.elements(); while (e.hasMoreElements()) { width = metrics.stringWidth((String)e.nextElement()); if (width > maxWidth) { maxWidth = width; } } Insets insets = ((JComponent)table.getCellRenderer(0,i)).getInsets(); // need to pad a little extra for everything to look right maxWidth += insets.left + insets.right + (maxWidth*.15); table.getColumnModel().getColumn(i).setPreferredWidth(maxWidth); tableWidth += maxWidth; } Dimension d = table.getSize(); d.width = tableWidth; table.setSize(d); } public class STAFLogFrame extends JFrame implements ActionListener { public STAFLogFrame(String title) { super(title); JMenuBar mainMenuBar = new JMenuBar(); setJMenuBar(mainMenuBar); fFileMenu = new JMenu("File"); mainMenuBar.add(fFileMenu); fViewMenu = new JMenu("View"); mainMenuBar.add(fViewMenu); fFileExit = new JMenuItem("Exit"); fFileExit.addActionListener(this); fFileMenu.add(fFileExit); fViewRefresh = new JMenuItem("Refresh"); fViewRefresh.addActionListener(this); fViewMenu.add(fViewRefresh); fViewChangeFont = new JMenuItem("Change Font..."); fViewChangeFont.addActionListener(this); fViewMenu.add(fViewChangeFont); fChangeFontDialog = new JDialog(this, "Change Font", true); fChangeFontDialog.setSize(220, 120); JPanel changeFontPanel = new JPanel(); changeFontPanel.setLayout(new BorderLayout()); changeFontPanel.setBorder(new TitledBorder("Select Font")); fChangeFontDialog.getContentPane().add(changeFontPanel); fFontMenuItems = new Vector(); GraphicsEnvironment env = GraphicsEnvironment. getLocalGraphicsEnvironment(); String[] fontNames = env.getAvailableFontFamilyNames(); fAvailableFonts = new JComboBox(fontNames); fAvailableFonts.setBackground(Color.white); changeFontPanel.add(BorderLayout.NORTH, fAvailableFonts); JPanel changeFontButtonPanel = new JPanel(); changeFontButtonPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); fChangeFontOkButton = new JButton("OK"); fChangeFontOkButton.addActionListener(this); fChangeFontCancelButton = new JButton("Cancel"); fChangeFontCancelButton.addActionListener(this); changeFontButtonPanel.add(fChangeFontOkButton); changeFontButtonPanel.add(Box.createHorizontalStrut(20)); changeFontButtonPanel.add(fChangeFontCancelButton); changeFontPanel.add(BorderLayout.SOUTH, changeFontButtonPanel); fLevels = new JMenu("Levels"); mainMenuBar.add(fLevels); fLevelAll = new JCheckBoxMenuItem("All", true); fLevelAll.addActionListener(this); fLevels.add(fLevelAll); fLevels.addSeparator(); fLevelFatal = new JCheckBoxMenuItem("Fatal", true); fLevelFatal.addActionListener(this); fLevels.add(fLevelFatal); fLevelError = new JCheckBoxMenuItem("Error", true); fLevelError.addActionListener(this); fLevels.add(fLevelError); fLevelWarning = new JCheckBoxMenuItem("Warning", true); fLevelWarning.addActionListener(this); fLevels.add(fLevelWarning); fLevelInfo = new JCheckBoxMenuItem("Info", true); fLevelInfo.addActionListener(this); fLevels.add(fLevelInfo); fLevelTrace = new JCheckBoxMenuItem("Trace", true); fLevelTrace.addActionListener(this); fLevels.add(fLevelTrace); fLevelTrace2 = new JCheckBoxMenuItem("Trace2", true); fLevelTrace2.addActionListener(this); fLevels.add(fLevelTrace2); fLevelTrace3 = new JCheckBoxMenuItem("Trace3", true); fLevelTrace3.addActionListener(this); fLevels.add(fLevelTrace3); fLevelDebug = new JCheckBoxMenuItem("Debug", true); fLevelDebug.addActionListener(this); fLevels.add(fLevelDebug); fLevelDebug2 = new JCheckBoxMenuItem("Debug2", true); fLevelDebug2.addActionListener(this); fLevels.add(fLevelDebug2); fLevelDebug3 = new JCheckBoxMenuItem("Debug3", true); fLevelDebug3.addActionListener(this); fLevels.add(fLevelDebug3); fLevelStart = new JCheckBoxMenuItem("Start", true); fLevelStart.addActionListener(this); fLevels.add(fLevelStart); fLevelStop = new JCheckBoxMenuItem("Stop", true); fLevelStop.addActionListener(this); fLevels.add(fLevelStop); fLevelPass = new JCheckBoxMenuItem("Pass", true); fLevelPass.addActionListener(this); fLevels.add(fLevelPass); fLevelFail = new JCheckBoxMenuItem("Fail", true); fLevelFail.addActionListener(this); fLevels.add(fLevelFail); fLevelStatus = new JCheckBoxMenuItem("Status", true); fLevelStatus.addActionListener(this); fLevels.add(fLevelStatus); fLevelUser1 = new JCheckBoxMenuItem("User1", true); fLevelUser1.addActionListener(this); fLevels.add(fLevelUser1); fLevelUser2 = new JCheckBoxMenuItem("User2", true); fLevelUser2.addActionListener(this); fLevels.add(fLevelUser2); fLevelUser3 = new JCheckBoxMenuItem("User3", true); fLevelUser3.addActionListener(this); fLevels.add(fLevelUser3); fLevelUser4 = new JCheckBoxMenuItem("User4", true); fLevelUser4.addActionListener(this); fLevels.add(fLevelUser4); fLevelUser5 = new JCheckBoxMenuItem("User5", true); fLevelUser5.addActionListener(this); fLevels.add(fLevelUser5); fLevelUser6 = new JCheckBoxMenuItem("User6", true); fLevelUser6.addActionListener(this); fLevels.add(fLevelUser6); fLevelUser7 = new JCheckBoxMenuItem("User7", true); fLevelUser7.addActionListener(this); fLevels.add(fLevelUser7); fLevelUser8 = new JCheckBoxMenuItem("User8", true); fLevelUser8.addActionListener(this); fLevels.add(fLevelUser8); columnNames = new Vector(); columnNames.add(new String("Timestamp")); columnNames.add(new String("Level")); columnNames.add(new String("Message")); fLogTable = new JTable(); fLogTable.setFont(new Font(fFontName, Font.PLAIN, 12)); fAvailableFonts.setSelectedItem(fFontName); fLogTable.setRowSelectionAllowed(true); fLogTable.setColumnSelectionAllowed(false); fLogTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); updateRowHeights(fLogTable, 2, fFontName); sizeColumnsToFitText(fLogTable); JScrollPane logScroll = new JScrollPane(fLogTable); getContentPane().add(logScroll); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { if (! fSystemExit) dispose(); else { System.exit(0); } } }); } public void actionPerformed(ActionEvent e) { if (e.getSource() == fFileExit) { if (! fSystemExit) dispose(); else { System.exit(0); } } else if (e.getSource() == fViewRefresh) { refreshTable(true); } else if (e.getSource() == fViewChangeFont) { fChangeFontDialog.setLocationRelativeTo(fLogFrame); fChangeFontDialog.show(); } else if (e.getSource() == fChangeFontOkButton) { fFontName = (String)fAvailableFonts.getSelectedItem(); fLogTable.setFont(new Font(fFontName, Font.PLAIN, 12)); updateLogTableRenderers(); updateRowHeights(fLogTable, 2, fFontName); sizeColumnsToFitText(fLogTable); fChangeFontDialog.hide(); } else if (e.getSource() == fChangeFontCancelButton) { fChangeFontDialog.hide(); } else if ((e.getSource() == fLevelAll) && fLevelAll.isSelected()) { fLevelFatal.setSelected(true); fLevelError.setSelected(true); fLevelWarning.setSelected(true); fLevelInfo.setSelected(true); fLevelTrace.setSelected(true); fLevelTrace2.setSelected(true); fLevelTrace3.setSelected(true); fLevelDebug.setSelected(true); fLevelDebug2.setSelected(true); fLevelDebug3.setSelected(true); fLevelStart.setSelected(true); fLevelStop.setSelected(true); fLevelPass.setSelected(true); fLevelFail.setSelected(true); fLevelStatus.setSelected(true); fLevelUser1.setSelected(true); fLevelUser2.setSelected(true); fLevelUser3.setSelected(true); fLevelUser4.setSelected(true); fLevelUser5.setSelected(true); fLevelUser6.setSelected(true); fLevelUser7.setSelected(true); fLevelUser8.setSelected(true); refreshTable(true); } else if ((e.getSource() == fLevelAll) && !(fLevelAll.isSelected())) { fLevelFatal.setSelected(false); fLevelError.setSelected(false); fLevelWarning.setSelected(false); fLevelInfo.setSelected(false); fLevelTrace.setSelected(false); fLevelTrace2.setSelected(false); fLevelTrace3.setSelected(false); fLevelDebug.setSelected(false); fLevelDebug2.setSelected(false); fLevelDebug3.setSelected(false); fLevelStart.setSelected(false); fLevelStop.setSelected(false); fLevelPass.setSelected(false); fLevelFail.setSelected(false); fLevelStatus.setSelected(false); fLevelUser1.setSelected(false); fLevelUser2.setSelected(false); fLevelUser3.setSelected(false); fLevelUser4.setSelected(false); fLevelUser5.setSelected(false); fLevelUser6.setSelected(false); fLevelUser7.setSelected(false); fLevelUser8.setSelected(false); refreshTable(true); } else if ((e.getSource() == fLevelFatal)) { refreshTable(true); if (!(fLevelFatal.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelError)) { refreshTable(true); if (!(fLevelError.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelWarning)) { refreshTable(true); if (!(fLevelWarning.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelInfo)) { refreshTable(true); if (!(fLevelInfo.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelTrace)) { refreshTable(true); if (!(fLevelTrace.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelTrace2)) { refreshTable(true); if (!(fLevelTrace2.isSelected())) { fLevelAll.setSelected(false); } else if (allLevelsSelected()) { fLevelAll.setSelected(true); } } else if ((e.getSource() == fLevelTrace3)) { refreshTable(true); if (!(fLevelTrace3.isSelected())) { fLevelAll.setSelected(false); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -