-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCTUI.java
More file actions
70 lines (65 loc) · 2.41 KB
/
CTUI.java
File metadata and controls
70 lines (65 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication2;
import javax.swing.table.*;
import javax.swing.plaf.basic.*;
import java.awt.*;
import javax.swing.*;
public class CTUI extends BasicTableUI {
public void paint(Graphics g, JComponent c) {
Rectangle r = g.getClipBounds();
// int firstRow = table.rowAtPoint(new Point(0, r.y));
// int lastRow = table.rowAtPoint(new Point(0, r.y + r.height));
int firstCol = table.columnAtPoint( new Point( r.x , 0 ) );
int lastCol = table.columnAtPoint(new Point( r.x + r.width, 0 ));
// -1 is a flag that the ending point is outside the table
// if (lastRow < 0)
// lastRow = table.getRowCount() - 1;
if (lastCol < 0)
lastCol = table.getColumnCount() - 1;
for (int i = firstCol; i <= lastCol; i++)
paintCol(i, g);
}
private void paintCol(int col, Graphics g) {
Rectangle r = g.getClipBounds();
for (int i = 0; i < table.getRowCount(); i++) {
Rectangle r1 = table.getCellRect( i, col, true);
if (r1.intersects(r)) // at least a part is visible
{
int sk = ((CTable) table).map.visibleCell( i, col );
paintCell( sk, col, g, r1);
// increment the column counter
i += ((CTable) table).map.span( sk, col ) - 1;
}
}
}
private void paintCell(int row, int column, Graphics g, Rectangle area) {
int verticalMargin = table.getRowMargin();
int horizontalMargin = table.getColumnModel().getColumnMargin();
Color c = g.getColor();
g.setColor(table.getGridColor());
g.drawRect(area.x, area.y, area.width - 1, area.height - 1);
g.setColor(c);
area.setBounds(area.x + horizontalMargin / 2, area.y + verticalMargin
/ 2, area.width - horizontalMargin, area.height
- verticalMargin);
if (table.isEditing() && table.getEditingRow() == row
&& table.getEditingColumn() == column) {
Component component = table.getEditorComponent();
component.setBounds(area);
component.validate();
}
else
{
TableCellRenderer renderer = table.getCellRenderer(row, column);
Component component = table.prepareRenderer(renderer, row, column);
if (component.getParent() == null)
rendererPane.add(component);
rendererPane.paintComponent(g, component, table, area.x, area.y,
area.width, area.height, true);
}
}
}