Originariamente inviato da Alex'87
Dai un'occhiata
qui
Avevo dato un'occhiata ma non avevo cavato un ragno dal buco
Però credo di aver risolto con questo codice:
codice:
private class MyTable extends JTable {
public MyTable(Object[][] rowData, Object[] columnNames) {
super(rowData, columnNames);
}
@Override
public Component prepareRenderer(TableCellRenderer ren, int row, int col) {
Component c = super.prepareRenderer(ren, row, col);
((JComponent) c).setOpaque(isCellSelected(row, col));
return c;
}
@Override
public Component prepareEditor(TableCellEditor ed, int row, int col) {
Component c = super.prepareEditor(ed, row, col);
((JComponent) c).setOpaque(isCellSelected(row, col));
// Se è un JTextComponent, seleziono tutto il contenuto
if (c instanceof JTextComponent) {
JTextComponent t = (JTextComponent) c;
t.selectAll();
}
return c;
}
@Override
public boolean getScrollableTracksViewportHeight() {
return true;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
RadialGradientPaint gradient = getRadialGradientPaintMin(this.getWidth(), this.getHeight());
g2.setPaint(gradient);
g2.fillRect(0, 0, this.getWidth(), this.getHeight());
this.setOpaque(false);
super.paintComponent(g);
this.setOpaque(true);
}
}
private class MySC extends JScrollPane {
public MySC() {
}
public MySC(Component view) {
super(view);
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
RadialGradientPaint gradient = getRadialGradientPaintMin(this.getWidth(), this.getHeight());
g2.setPaint(gradient);
g2.fillRect(0, 0, this.getWidth(), this.getHeight());
this.setOpaque(false);
super.paintComponent(g);
this.setOpaque(true);
}
}
public static RadialGradientPaint getRadialGradientPaintMin(int w, int h) {
Color c1 = new Color(150, 150, 150);
Color c2 = new Color(224, 224, 224);
Point2D centro = new Point2D.Float((float) (w / 2.0), (float) (h / 2.0));
float raggio = Math.min((float) (w / 2.0), (float) (h / 2.0));
float[] dist = {0.0f, 0.5f, 1.0f};
Point2D focus = new Point2D.Float((float) (w / 2.0 * 0.45), (float) (h / 2.0 * 0.45));
Color[] colori = {c1, c2, c1};
RadialGradientPaint p = new RadialGradientPaint(centro, raggio, focus, dist, colori, CycleMethod.REFLECT);
return p;
}
Poi di fa un JPanel, con dentro un MySC con dentro MyTable.
L'effetto è psichedelico, ma a me garba di molto
E poi basta giocare con i parametri del gradiente per ottere altri effetti.