Multiple Zeilen in einer JTable Zelle

Status
Nicht offen für weitere Antworten.

Audio Anarchy

Aktives Mitglied
Hallo Freunde,

ich habe eine Tabelle mit 2 Spalten.

Die erste Spalte zeigt volle Stunden an. Das JLabel wird zentriert angezeigt.
Die zweite Spalte soll jede viertel Stunde anzeigen und wird rot markiert. Also auf eine Zeile in der ersten
Spalte kommen vier Zeilen in der Zweiten Spalte.

Ich habe die Tabelle bisher an meine Bedürfnisse angepasst und den prepareRenderer überschrieben.
Das sieht so aus:

Code:
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {

        JLabel c = (JLabel) super.prepareRenderer(renderer, row, column);
        if (column == 0){
            c.setHorizontalAlignment(JLabel.CENTER);
        }else{
            c.setHorizontalAlignment(JLabel.LEFT);
        }

        if (column == 1){
            c.setBackground(Color.RED);
        }

        return c;
    }

Gibt es für mich eine Möglichkeit in der obigen Methode zu sagen dass er mir die Zellen in der zweiten Spalte
in vier Zeilen unterteilen soll, auf die ich dann einzeln zugreifen kann. Danke für's Lesen!
 
M

Michael...

Gast
Nur mit dem Überschreiben von prepareRenderer wird man da vermutlich nicht weit kommen. Ich würde da einen eigenen CellRenderer für die zweite Spalte erstellen. Könnte allerdings ziemlich aufwendig werden.
 
M

Michael...

Gast
wäre es so schlimm, wenn z.B. die erste Spalte ebenfalls die vier Zellen hätte und nur eine befüllt bzw. nur ein Eintrag sichtbar
 
M

Michael...

Gast
wenn's um einen Terminplaner geht, habe ich da noch was altes von mir ein bisschen modifiziert.
Vielleicht kannst Du darauf aufbauen. Mit z.B. JScrollPane.setRowHeaderView() (s. Zeile 15) kann man beliebige Komponten als Zeilenbeschriftung setzen. Vielleicht kannst Du Dir dann die vierer Unterteilung einzelner Zellen sparen.
Code:
import java.awt.*;

import javax.swing.*;
import javax.swing.table.*;

public class TimeTableDemo extends JFrame {
	private TimeTable table;
	
	public TimeTableDemo() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(50, 50, 500, 300);
		
		table = new TimeTable(new DefaultTableModel(new Object [24][], new String [] {"Mo", "Di", "Mi", "Do", "Fr"}));
		JScrollPane pane = new JScrollPane(table);
		pane.setRowHeaderView(new TimeHeader(table.getRowHeight()*4, new Object[] {"08", "09", "10", "11", "12", "13"}));
		
		this.getContentPane().add(pane, BorderLayout.CENTER);
		
		for (int r=3; r<10; r++)
			table.setValueAt(new Object(), r, 1);
		
		for (int r=5; r<19; r++)
			table.setValueAt(new Object(), r, 3);
		
	}
	
	public static void main(String[] args) {
		new TimeTableDemo().setVisible(true);
	}
}

class TimeTable extends JTable {
	
	public TimeTable(TableModel model) {
		super(model);
		setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		setRowSelectionAllowed(false);
		setColumnSelectionAllowed(false);
		setCellSelectionEnabled(true);
		setDefaultRenderer(Object.class, new TimeCellRenderer());
	}
	
	public boolean isCellEditable(int row, int column) {
		return false;
	}
}

class TimeCellRenderer implements TableCellRenderer {
	private JLabel label = new JLabel();
	
	public TimeCellRenderer() {
		this.label = new JLabel();
		this.label.setOpaque(true);
	}
	
	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
		if (value!=null) {
			this.label.setBackground(Color.CYAN);
		}
		else if (isSelected) {
			this.label.setBackground(table.getSelectionBackground());
		}
		else
			this.label.setBackground(Color.WHITE);
		return this.label;
	}
	
}

class TimeHeader extends JComponent {
	private int rowHeight;
	private Object[] object;
	private int objectCount;
	
	public TimeHeader(int height, Object[] object) {
		this.rowHeight = height;
		this.object = object;
		this.objectCount = object.length;
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		int w = this.getWidth();
		int w2 = w/2;
		int h =  this.rowHeight;
		int h1 = h/4 -1;
		int h2 = h*2/4 -1;
		int h3 = h*3/4 -1;
		
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, w, this.getHeight());
		
		g.setColor(Color.BLACK);
		g.drawLine(w-1, 0, w-1, this.getHeight());
		g.drawLine(0, 0, w, 0);
		for (int i=0; i<this.objectCount; i++) {
			g.drawLine(w2, i*h +h1, w, i*h +h1);
			g.drawLine(w2, i*h +h2, w, i*h +h2);
			g.drawLine(w2, i*h +h3, w, i*h +h3);
			g.drawLine(0, i*h +h-1, w, i*h +h-1);
			g.drawString(object[i].toString(), 2, i*h +12);
		}
	}
	
	public Dimension getPreferredSize() {
		return new Dimension(30, 3000);
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
S Multiple Choice Test AWT, Swing, JavaFX & SWT 2
G JTable Multiple Row Header Example - Probleme mit der Höhe der Zellen AWT, Swing, JavaFX & SWT 4
N multiple DefaultMutableTreeNode in eins AWT, Swing, JavaFX & SWT 2
S NetBeans && multiple Fensteroeffnung AWT, Swing, JavaFX & SWT 3
hdi Swing JTable - multiple Sortierung AWT, Swing, JavaFX & SWT 4
A Multiple Bindings für JButton AWT, Swing, JavaFX & SWT 3
M JFileChooser und multiple Selektierung auch für Verz? AWT, Swing, JavaFX & SWT 2
Encera TableView Zeilen als Spalten im SceneBuilder AWT, Swing, JavaFX & SWT 0
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
T TableView Zeilen einfärben AWT, Swing, JavaFX & SWT 13
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
M Befüllung der einzelnen Zeilen des TableView AWT, Swing, JavaFX & SWT 3
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
X Zeilen aus einer Textdatei einzelnd als String abrufen AWT, Swing, JavaFX & SWT 8
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
J JavaFX TableView - Höhe der Zeilen AWT, Swing, JavaFX & SWT 3
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
B Java FX TableView Zeilen mit verschiedenen Typen AWT, Swing, JavaFX & SWT 15
P jtabel Zeilen auswählbar, aber nicht editierbar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
D Swing Bestimmte Berechnung von Spalten durchführen und dann die Zeilen nach bestimmten Kriterien einfärben AWT, Swing, JavaFX & SWT 5
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
B Swing BalloonTip erscheint nicht in den ersten Zeilen einer JXTable AWT, Swing, JavaFX & SWT 4
Bluedaishi JTable alle Zeilen löschen AWT, Swing, JavaFX & SWT 7
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
K SWT DataBinding, Anzahl der Zeilen aktualisieren AWT, Swing, JavaFX & SWT 4
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
P gleichanfangende Zeilen solange auslesen bis es die gibt AWT, Swing, JavaFX & SWT 12
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
O Swing JTable - Zeilen färben (mit Model) AWT, Swing, JavaFX & SWT 13
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
M JTable Zeilen und Zellen einfärben AWT, Swing, JavaFX & SWT 11
M Selektierte Zeilen von JTable AWT, Swing, JavaFX & SWT 10
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
M JTable Zeilen einfärben AWT, Swing, JavaFX & SWT 13
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
L JTableModel - Zeilen mit eigenem Index ausstatten AWT, Swing, JavaFX & SWT 4
S JEditorPane Zeilen zählen AWT, Swing, JavaFX & SWT 5
S Swing JTable Zeilen löschen AWT, Swing, JavaFX & SWT 21
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
B JTable Zeilen und Spalten selektieren AWT, Swing, JavaFX & SWT 5
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
L LayoutManager GridBagLayout leere Zeilen AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
B 2D-Grafik Zeilen drehen im JEditorPane AWT, Swing, JavaFX & SWT 3
0 JTable leere Zeilen einfügen AWT, Swing, JavaFX & SWT 3
M Markieren von ganzen Zeilen in transparenten Tabellen AWT, Swing, JavaFX & SWT 6
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
D JTable mit mehrzeiligen Zeilen AWT, Swing, JavaFX & SWT 5
kodela Swing selektierte Zeilen in JTable AWT, Swing, JavaFX & SWT 3
O Anzahl der Zeilen im TableViewer AWT, Swing, JavaFX & SWT 12
B Swing Zeilen Rotation AWT, Swing, JavaFX & SWT 5
J Swing JList: Neue Zeilen mit fireIntervalAdded sind automatisch selektiert AWT, Swing, JavaFX & SWT 2
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
D Tabellen Header & Abstand der Zeilen AWT, Swing, JavaFX & SWT 8
D Swing JTable: über sichtbare Zeilen iterieren AWT, Swing, JavaFX & SWT 2
U JTable: Zeilen abhängig vom Datensatz einfärben AWT, Swing, JavaFX & SWT 4
E JTextarea verschluckt Zeilen AWT, Swing, JavaFX & SWT 5
A JComboBox-Zeilen in JTable AWT, Swing, JavaFX & SWT 2
martin82 Swing JXTable gefilterte Zeilen AWT, Swing, JavaFX & SWT 4
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
B Swing JTable: mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 3
M JTable - mehrere Zeilen selektieren AWT, Swing, JavaFX & SWT 7
M JTable einzelne Zeilen färben AWT, Swing, JavaFX & SWT 2
T GridLayout Zeilen Hintergrund AWT, Swing, JavaFX & SWT 5
A Swing JTable Zeilen einfügen verbieten AWT, Swing, JavaFX & SWT 3
elitebiber Swing Zeilen in einer JTable gruppieren AWT, Swing, JavaFX & SWT 3
Meldanor JTables - Zeilen hinzufügen/löschen AWT, Swing, JavaFX & SWT 4
T Wie Zeilen in Tabellen farblich differenzieren? AWT, Swing, JavaFX & SWT 3
R JScrollBar - Immer drei Zeilen weiter AWT, Swing, JavaFX & SWT 10
O Zeilen in JTable auf Grund eines Wertes einfärben AWT, Swing, JavaFX & SWT 6
R Suchbare Zeilen von JTable in JScrollPane ermitteln AWT, Swing, JavaFX & SWT 9
D Jlist auf 10 Zeilen begrenzen geht bei mir nicht AWT, Swing, JavaFX & SWT 2
O JTable Zeilen "nach oben" verschieben AWT, Swing, JavaFX & SWT 3
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
A Drag & Drop von Zeilen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 2
F Per KeyListener Zeilen aus JTable löschen AWT, Swing, JavaFX & SWT 9
K Mehrere Zeilen auf einem Button AWT, Swing, JavaFX & SWT 2
M JScrollbar + JTable + Zeilen wie in Excel hinzufügen AWT, Swing, JavaFX & SWT 14
D Ireport - Summe bilden von einzelnen Zeilen? AWT, Swing, JavaFX & SWT 1
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
Z JTable Zeilen nummerieren AWT, Swing, JavaFX & SWT 2
G Tabellenköpfe für die Zeilen AWT, Swing, JavaFX & SWT 3
G JTable mit JTextAreaEditor - Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 4
S Welcher Listener ? In JTable mehrere Zeilen markieren & AWT, Swing, JavaFX & SWT 2
P Tablle mit Zeilen Header (nicht spaltenheader) AWT, Swing, JavaFX & SWT 3
L JTabels und das Hinzufügen von Zeilen mit Inhalt AWT, Swing, JavaFX & SWT 17
J JTable - Wie Zeilen löschen ? AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben