Swing Eigene Tabelle

Dust80

Mitglied
Hallo,

ich muss ein Progrmam umbauen was komplett mit dem null layout erstellt wurde...

Wie kann ich folgende GUI umsetzen, bis jetzt habe ich es mit GridBagLayout versucht, allerdings nicht sehr erfolgreich, hab ihr vielleicht andere Ideen?
Die einzelnen Einträge der rows sollen wie in einer normalen Tabelle unter den headern erscheinen...

Oben ist der Header zu sehen,
die einzelnen rows sind eigene JPanels, die auf einem Panel in einem ScrollPane liegen. die einzelnen rowpanels haben auch noch Funktionalität drin... (ja, ich weiß, aber wurde damals so programmeirt)

table.PNG
 
Zuletzt bearbeitet:

Dust80

Mitglied
Das Problem ist das der Header nicht mit in der ScrollPane liegt.

Also genereller Aufbau:
tabellenPanel mit BorderLayout
header auf tabellenPanel (NORTH) mit GridBagLayout
zeilen panel mit gridbaglayout auf scrollpane
im zeilen panel gleiches gridbaglayout wie der header
scrollpane auf tabellenpanel (CENTER)
 
Zuletzt bearbeitet:

Dust80

Mitglied
Hi,

das es so aussehen soll wie vorher :)

Und einige Labels Funtionalität besitzen wie hinterlegte Dateien öffnen etc.

Sonst muss ich wohl alles umproggen...
 
Zuletzt bearbeitet:

Foxei

Bekanntes Mitglied
Hi Dust80,
Du warst mit deinem GridBagLayout absolut auf dem Richtigen weg :D Vielleicht war dir nur nicht ganz klar wie viele Möglichkeiten du hast. :D
Forum.PNG

Ich habe hier eine Frame mit einem BorderLayout.
Auf Position North habe ich ein JPanel mit einem GridLayout das 9 Spalten breit ist da sind einzelne JLabels für die heads drin.
Da drunter im Center des BorderLayou habe ich eine JScrollpane mit einem weiteren JPanel drauf diese JPanel ist mit einem GridBagLayout versehen was nur aus Zeilen besteht also eine Spalte und unendliche Zeilen. In einer Zeile befindet sich dann ein weiteres JPanel auf dem via GridBagLayout alle 9 JLabel neben einander positioniert und diese auf 100% der breite streckt.

(ich weiß man hätte an manchen stellen auf einfach ein GridLayout nehmen können aber ich habe es jetzt halt so gelöst)
Das Resultat ist eine Tabelle die dynamisch mit skaliert.

Wenn du genau wissen willst wie ich das gemacht habe Frag einfach nochmal nach.
LG Foxei
 

Dust80

Mitglied
Hi Foxei,

ja, das sieht ja schonmal so aus wie ich das habe, das Problem is aber dass die Header Labels halt genau die gleiche Position haben sollen wie die Tabellenzeilen, also dass es als Überschrift erkenntbar ist, bei dir sind ja leider die Header auch "verrückt"
 

Foxei

Bekanntes Mitglied
Ich glaube das hier müsste deine Vorstellung am ehesten treffen oder?
Die Heads bewegen und resizen mit den Column. Die Columns sind hierbei die die Heads steuern.
Anhang anzeigen 7129
 
Zuletzt bearbeitet:

Foxei

Bekanntes Mitglied
Hmm versuchen wir es noch einmal hier mein ergebnis mit den sich mit bewegenden heads: Forum.PNG
 
Zuletzt bearbeitet:

Foxei

Bekanntes Mitglied
Gewürtzt mit etwas Design kommt dabei sowas raus entspricht das deinen Vorstellungen dann sage ich dir wie ich das gemacht habe?
Forum.PNG
 

Foxei

Bekanntes Mitglied
Also es ist recht Simple ich habe ein JPanel mit BorderLayout.
Im Norden diese ein weiteres JPanel mit FlowLayout nach links Orientiert. Darauf JLabels als Heads.

Im Center eine JScollPane. Auf dieser ein JPanel mit einem GridBagLayout aus einer Spalte und unendlich Zeilen. (GridLayout müsste hier auch gehen) Dann habe ich in jeder Zeile des JPanel ein neues JPanel mit einem GridBagLayout mit nur einer Zeile aber vielen Spalten. (GridLayout geht hier nicht weil ich die Spalten verschieden breit mache.) In Jede Spalte kommt ein JLabel mit seinem Text und einem ResizeListener der bei einer Größenveränderung die Heads anpasst. Und Fertig :D

Funktionen wie Zeilen nachträgliche Hinzufügung gibt es allerdings noch nicht es ging ja nur um das Layout.

Hier mein JPanel:(Ich bin nicht der König was perfektes Proggen angeht bitte verzeiht unsauberen Code und sag mir was ich besser machen kann.)
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.border.MatteBorder;

public class JSTable extends JPanel{
	
	private List<JLabel> head=new ArrayList<JLabel>();
	
	public JSTable(String[] heads,List<String[]> data) {
		setLayout(new BorderLayout());
		FlowLayout layout=new FlowLayout(FlowLayout.LEFT);
		layout.setHgap(0);
		JPanel panelTop = new JPanel();
		panelTop.setLayout(layout);
		panelTop.setBackground(Color.LIGHT_GRAY);
		panelTop.setBorder(new EmptyBorder(0,5,0,0));
		add(panelTop, BorderLayout.NORTH);
		
		
		for(int i=0;i<heads.length;i++){
			JLabel lblHeader = new JLabel();
			lblHeader.setHorizontalAlignment(SwingConstants.CENTER);
			lblHeader.setBackground(Color.LIGHT_GRAY);
			lblHeader.setText(heads[i]);
			if(i>heads.length-1)
			lblHeader.setBorder(new MatteBorder(new Insets(0, 0, 0, 1), Color.GRAY));
			panelTop.add(lblHeader);
			head.add(lblHeader);
		}
		JScrollPane scrollPane = new JScrollPane();
		add(scrollPane, BorderLayout.CENTER);
		JPanel panel = new JPanel();
		scrollPane.setViewportView(panel);
		
		GridBagLayout gbl_panel = new GridBagLayout();
		gbl_panel.columnWidths = new int[]{0, 0};
		gbl_panel.rowHeights = new int[]{0, 0, 0};
		gbl_panel.columnWeights = new double[]{1.0, Double.MIN_VALUE};
		gbl_panel.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE};
		panel.setLayout(gbl_panel);
		
		for(int i=0;i<data.size();i++){
			GridBagLayout gbl_panelIn = new GridBagLayout();
			gbl_panelIn.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
			gbl_panelIn.rowHeights = new int[]{0, 0};
			gbl_panelIn.columnWeights = new double[]{1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE};
			gbl_panelIn.rowWeights = new double[]{0.0, Double.MIN_VALUE};
			
			JPanel panelIn = new JPanel();
			panelIn.setLayout(gbl_panelIn);
			panelIn.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), Color.GRAY));
			
			GridBagConstraints gbc_panelIn = new GridBagConstraints();
			gbc_panelIn.insets = new Insets(5, 5, 5, 5);
			gbc_panelIn.fill = GridBagConstraints.HORIZONTAL;
			gbc_panelIn.gridx = 0;
			gbc_panelIn.gridy = i;
			panel.add(panelIn, gbc_panelIn);
			
			
			for(int j=0;j<data.get(i).length;j++){
			JLabel lblColumn = new JLabel(data.get(i)[j]);
			lblColumn.setHorizontalAlignment(SwingConstants.CENTER);
			if(j!=8)
				lblColumn.setBorder(new MatteBorder(new Insets(0, 0, 0, 1),Color.GRAY));
			if(j==0)
				lblColumn.setText(data.get(i)[j]+i);
			
			final int u=j;
			lblColumn.addComponentListener(new ComponentAdapter() {
				@Override
				public void componentResized(ComponentEvent arg0) {
					super.componentResized(arg0);
					resizeHead(u,arg0.getComponent().getWidth());
				}
			});
			
			
			GridBagConstraints gbc_lblColumn = new GridBagConstraints();
			gbc_lblColumn.fill = GridBagConstraints.HORIZONTAL;
			gbc_lblColumn.insets = new Insets(5, 0, 5, j!=data.get(i).length-1?0:5);
			gbc_lblColumn.gridx = j;
			gbc_lblColumn.gridy = 0;
			panelIn.add(lblColumn, gbc_lblColumn);
			}
		}
	}
	public void resizeHead(int i, int width){
		head.get(i).setPreferredSize(new Dimension(width,20));
	}
}

bei Fragen stehe ich weiterhin zur Verfügung
LG Foxei
 

Dust80

Mitglied
Das sieht doch schonmal gnaz gut aus, das Stichwort was ich im Endeffekt gesucht habe ist der Rezised Listener :)
Ich bau das noch ein bißchen um für meien Zwecke, falls du meine Version dann noch sehen willst meld dich einfach! Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M eigene GUI Bibliothek erstellen. AWT, Swing, JavaFX & SWT 10
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
B Notepad++ in die eigene GUI einbinden AWT, Swing, JavaFX & SWT 7
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
P X extends TreeView - eigene Methoden AWT, Swing, JavaFX & SWT 5
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L Eigene Component anordnen AWT, Swing, JavaFX & SWT 7
L JavaFX Eigene JavaFX Controls anlegen AWT, Swing, JavaFX & SWT 1
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
T Swing Eigene Konsole AWT, Swing, JavaFX & SWT 5
M eigene horizontale Scrollbar AWT, Swing, JavaFX & SWT 1
M JavaFX Scenebuilder eigene Komponenten AWT, Swing, JavaFX & SWT 8
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
J JavaFX Eigene ListCell Problem(Objekte werden doppelt angezeigt) AWT, Swing, JavaFX & SWT 1
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
Kenan89 3D Models aus anderen Spielen in eigene einfügen AWT, Swing, JavaFX & SWT 3
R SWT Eigene Events erstellen und werfen AWT, Swing, JavaFX & SWT 59
P Eigene CMD GUI zum Starten von JAR AWT, Swing, JavaFX & SWT 10
M Swing eigene Dialoge, aber wie genau? AWT, Swing, JavaFX & SWT 5
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
K 3D-Grafik Eigene "Kamera" AWT, Swing, JavaFX & SWT 2
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
E LookAndFeel Eigene Komponenten mit Synth L&F stylen AWT, Swing, JavaFX & SWT 2
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Eigene Methoden in TABs einfügen AWT, Swing, JavaFX & SWT 8
R eigene Methoden für Buttons? AWT, Swing, JavaFX & SWT 11
H Swing Eigene Komponente wird nur halb oder komisch angezeigt AWT, Swing, JavaFX & SWT 3
H Swing Eigene Komponente reagiert falsch auf mouseClicked() AWT, Swing, JavaFX & SWT 5
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
L Eigene Design Oberfläche erstellen AWT, Swing, JavaFX & SWT 3
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
T SWT eigene Komponenten AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
A Eigene StatusBar AWT, Swing, JavaFX & SWT 2
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
S Eigene GUI Elemente erstellen AWT, Swing, JavaFX & SWT 6
D Eigene Methode soll Gerade zeichnen AWT, Swing, JavaFX & SWT 5
D Swing Eigene Komponente mit JSpinner AWT, Swing, JavaFX & SWT 4
MrMilti eigene Klasse in JTable ablegen AWT, Swing, JavaFX & SWT 12
R Swing JTable: Eigene Zeichnung im Header AWT, Swing, JavaFX & SWT 11
A Eigene Border für Buttons AWT, Swing, JavaFX & SWT 19
A Eigene Buttons AWT, Swing, JavaFX & SWT 20
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
S Eigene GUI (evt. Toolkit) AWT, Swing, JavaFX & SWT 10
M SWT: eigene Events AWT, Swing, JavaFX & SWT 9
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
T Eigene Fenster kreieren?zb. wie bei Winamp? AWT, Swing, JavaFX & SWT 9
D Eigene Component erstellen? AWT, Swing, JavaFX & SWT 4
F eigene Swing-Komponente. Drehregler AWT, Swing, JavaFX & SWT 4
M Eigene Klasse für mehrer JSplitPanes AWT, Swing, JavaFX & SWT 3
M Eigene Komponenten basteln AWT, Swing, JavaFX & SWT 25
O Eigene GUI Objekte entwerfen? AWT, Swing, JavaFX & SWT 3
A Eigene, sich selbst zeichnende Component AWT, Swing, JavaFX & SWT 5
S Eigene Komponenten AWT, Swing, JavaFX & SWT 2
T Eigene erweiterte MouseEvents nutzen AWT, Swing, JavaFX & SWT 2
M In eigene JPanel Klasse zeichnen AWT, Swing, JavaFX & SWT 4
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
M eigene ComponentUI und Serializable AWT, Swing, JavaFX & SWT 3
E Eigene Steuerelemente bauen AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
T 4 db tabellen in einem karteireiter eigene klasse für die me AWT, Swing, JavaFX & SWT 7
S SWT Für jede gui komponente eigene methode AWT, Swing, JavaFX & SWT 2
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
D eigene SwingKonsole. AWT, Swing, JavaFX & SWT 5
I Eigene JComboBox AWT, Swing, JavaFX & SWT 10
C UIDefaults für eigene Klasse anpassen AWT, Swing, JavaFX & SWT 3
C ISelectionProvider und eigene Selections AWT, Swing, JavaFX & SWT 2
M kann man auch eigene look and feels machen? AWT, Swing, JavaFX & SWT 2
L eigene Komponente, ActionEvent senden? AWT, Swing, JavaFX & SWT 3
E Beim Schließen des Fensters eigene Funktion aufrufen AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
T JFrame - eigene Titelleiste AWT, Swing, JavaFX & SWT 8
Y Eigene Komponente einfügen AWT, Swing, JavaFX & SWT 6
G Eigene Koponente erstellen AWT, Swing, JavaFX & SWT 3
G Eigene Componente in jScrollView einbetten AWT, Swing, JavaFX & SWT 6
T Eigene grafische Oberfläche AWT, Swing, JavaFX & SWT 7
W Kleine Sub-Tabelle in SpreadsheetView-Zelle anzeigen AWT, Swing, JavaFX & SWT 9
K Tabelle zu Datenbank hinzufügen / Apache Derby AWT, Swing, JavaFX & SWT 7
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben