Hjælp til at centrer tekst i JTable hvis DefaultTableCellRenderer() ikke bruges
Jeg kan fint centrer tekst i min tabel hvis jeg benytter følgende:defaultRendererCenter = new DefaultTableCellRenderer();
defaultRendererCenter.setHorizontalAlignment(SwingConstants.CENTER);
TableColumn newColumn = new TableColumn(modelIndex);
newColumn.setCellRenderer(defaultRendererCenter);
Men hvis jeg benytter følgende:
myRenderer = new FormattedCellRenderer(Format);
TableColumn newColumn = new TableColumn(modelIndex);
newColumn.setCellRenderer(myRenderer);
Så virker det ikke. Jeg har forsøgt med både:
JLabel newLabel = new JLabel(text, JLabel.CENTER);
Og
JLabel newLabel = new JLabel(text);
newLabel.setHorizontalAlignment(JLabel.CENTER);
newLabel.setHorizontalTextPosition(JLabel.CENTER);
Men min tekst bliver ved med at stå til venstre - også selvom jeg benytter SwingConstants.CENTER. Kan I hjæpe?
Her er min FormattedCellRenderer.java
--------------------------------------------------------------------
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.text.NumberFormat;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.OverlayLayout;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
class FormattedCellRenderer implements TableCellRenderer {
private Font font;
private NumberFormat format;
FormattedCellRenderer(NumberFormat format) {
this.format = format;
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JPanel newPanel = new JPanel();
newPanel.setLayout(new OverlayLayout(newPanel));
Color bgColor;
if (value != null) {
String text;
if (value instanceof Number)
text = format.format((Number) value);
else
text = value.toString();
JLabel newLabel = new JLabel(text, JLabel.CENTER);
newPanel.add(newLabel);
}
return newPanel;
}
}
Hvis jeg laver et System.out.println(newLabel) lige før newPanel.add(newLabel) får jeg følgende output:
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,
maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignm
ent=CENTER,horizontalTextPosition=CENTER,iconTextGap=4,labelFor=,text=6.7,verticalAli
gnment=CENTER,verticalTextPosition=CENTER]