Вот что получилось:
| Код | import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.border.BevelBorder; import javax.swing.table.DefaultTableCellRenderer;
public class NewJFrame extends javax.swing.JFrame { /** Creates new form NewJFrame */ public NewJFrame() { setLocationRelativeTo(null); initComponents(); pack(); jTable1.getTableHeader().setDefaultRenderer(new MyHeaderRenderer()); jTable1.getTableHeader().addMouseListener(new MouseAdapter() { public void mouseExited(MouseEvent e) { MyHeaderRenderer r = (MyHeaderRenderer) jTable1.getTableHeader().getDefaultRenderer(); r.setPos(-1); jTable1.getTableHeader().repaint(); } }); jTable1.getTableHeader().addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { super.mouseMoved(e); MyHeaderRenderer r = (MyHeaderRenderer) jTable1.getTableHeader().getDefaultRenderer(); r.setPos(jTable1.columnAtPoint(e.getPoint())); jTable1.getTableHeader().repaint(); } }); }
private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(jTable1);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-229)/2, (screenSize.height-170)/2, 229, 170); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration }
class MyHeaderRenderer extends DefaultTableCellRenderer { JLabel comp; private int pos = -1; public MyHeaderRenderer() { super(); comp = new JLabel(""); comp.setHorizontalAlignment(JLabel.CENTER); comp.setFont(new Font("Tahoma", Font.PLAIN, 12)); comp.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); comp.setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { comp.setText(value.toString()); if (column == getPos()) { comp.setBackground(Color.GREEN); } else if (column != -1) { comp.setBackground(Color.WHITE); } return comp; }
public int getPos() { return pos; }
public void setPos(int pos) { this.pos = pos; } }
|
|