Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (import '(javax.swing JFrame JPanel JScrollPane JTable SwingUtilities)
- '(javax.swing.table AbstractTableModel DefaultTableCellRenderer)
- '(java.awt Dimension GridLayout Font Color)
- '(java.awt.event MouseAdapter)
- '(java.sql DriverManager))
- (def table (JTable.))
- (SwingUtilities/invokeLater
- (fn []
- (doto (JFrame. "demo")
- (setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
- (setContentPane
- (doto (JPanel. (GridLayout. 1 0))
- (setOpaque true)
- (add (JScrollPane.
- (doto table
- (setPreferredScrollableViewportSize
- (Dimension. 500 70))
- (setFillsViewportHeight true))))))
- (pack)
- (setVisible true))))
- (def conn
- (DriverManager/getConnection "jdbc:postgresql:ivytech" "postgres" "system"))
- ;(DriverManager/getConnection "jdbc:postgresql:my-db-name" "my-user-name" "my-password"))
- (defn query-vec [sql]
- (with-open stmt (.createStatement conn)
- (vec (resultset-seq (.executeQuery stmt sql)))))
- (def rows (query-vec "SELECT * FROM LogB"))
- (defn model [rows col-names value-at]
- (proxy [AbstractTableModel] []
- (getRowCount [] (count rows))
- (getColumnCount [] (count col-names))
- (getColumnName [c] (nth col-names c))
- (getValueAt [r c] (value-at r c))
- (isCellEditable [r c] false)))
- (.setModel table (model rows
- ["foo" "bar" "baz"]
- (fn [r c] (str r ", " c))))
- (.setModel table (model rows
- ["record"]
- (fn [r c] (prn-str (nth rows r)))))
- (.setModel table (model rows
- (vec (map str (keys (first rows))))
- (fn [r c] ((nth rows r) (nth (keys (first rows)) c)))))
- (.setModel table (model rows
- ["Time" "Source" "Message"]
- (fn [r c] (let [row (nth rows r)]
- ((nth [#(:createtime row)
- #(str (:path row) ":" (:line row))
- #(:buffer row)] c))))))
- (.setDefaultRenderer table Object
- (proxy [DefaultTableCellRenderer] []
- (getTableCellRendererComponent [tbl obj isSelected hasFocus r c]
- (let [{:keys [level]} (nth rows r)]
- (doto this
- (setForeground (cond (<= level 0) Color/white
- (<= level 10) Color/blue
- (<= level 20) Color/red
- (<= level 30) Color/magenta
- :else Color/black))
- (setText (str obj)))))))
- (.addMouseListener table
- (proxy [MouseAdapter] []
- (mouseClicked [e]
- (when (== (.getClickCount e) 1)
- (let [p (.getPoint e)
- r (.rowAtPoint table p)
- c (.columnAtPoint table p)]
- (prn "click row " r)
- (flush))))))
Add Comment
Please, Sign In to add comment