Java Cell Renderer für JTable bei Nimbus Look and Feel

Borg2of7

Cadet 2nd Year
Registriert
Sep. 2006
Beiträge
17
Hallo!

Ich habe hier ein kleines Problem mit meinem CellRenderer nachdem ich mein Programm auf das Nimbus Look and Feel umgestellt habe.

Es geht darum in einer Tabellenzelle mehrere Zeilen anzuzeigen. Mit dem default-Look and Feel funktionierts einwandfrei, beim Nimbus (oder auch Windows) Look and Feel wird die ganze Tabelle zerschossen.

Woran kann das liegen?

Im Anhang findet Ihr einen Screenshot wie die Tabelle aussieht.

Code des Cell Renderer:
Code:
import java.awt.Component;

import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;

public class InfoCellRenderer extends JTextArea implements TableCellRenderer {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {

		setText(value.toString()); // Value kann String mit \n enthalten

		return this;

	}

}

Klasse, die den Cell Renderer verwendet:

Code:
package GUI.panels;

import java.awt.BorderLayout;
import java.util.StringTokenizer;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import prog.InfoCellRenderer;
import constants.Const;

public class DetailedCycleInformationPanel extends JPanel {
	private JScrollPane scrollPane = new JScrollPane();
	private JTable table;

	public DetailedCycleInformationPanel(int cycleID) {
		this.setLayout(new BorderLayout());

		String[] colNames = { Const.bundle.getString("cycleDayShort"), "°C",
				Const.bundle.getString("meds"),
				Const.bundle.getString("disturbingFactors"),
				Const.bundle.getString("notes") };

		String[][] rowData = Const.mainProg
				.getDetailedCycleInformation(cycleID);

		InfoCellRenderer icr = new InfoCellRenderer();

		table = new JTable(rowData, colNames);
		table.setDefaultRenderer(Object.class, icr);

		for (int i = 0; i < rowData.length; i++) {
			StringTokenizer st = new StringTokenizer(rowData[i][3], "\n");
			if (st.countTokens() > 1) {
				//table.setRowHeight(i, (st.countTokens() - 1) * 35);
			}

		}

		table.getColumnModel().getColumn(0).setMinWidth(30);
		table.getColumnModel().getColumn(0).setMaxWidth(30);
		table.getColumnModel().getColumn(1).setMinWidth(70);
		table.getColumnModel().getColumn(1).setMaxWidth(70);
		this.scrollPane.setViewportView(table);

		this.add(scrollPane, BorderLayout.CENTER);

	}

}

Danke schonmal.

Viele Grüße
 

Anhänge

  • screen1.png
    screen1.png
    9,2 KB · Aufrufe: 223
Zuletzt bearbeitet: (Etwas vergessen)
Zurück
Oben