Matrix auf Panel zeichnen

Status
Nicht offen für weitere Antworten.
J

Jino

Gast
Hallo Zusammen!
Ich will ein matrix von Typ double auf ein canvas/Panel.. zeichnen, wobei sich die Farbe der Werten nach ihrer grössen in einer Zelle einer Matrix ändern können.
Gibt es in java etwas schon vordefeniert,so dass man ein Matrix ohne grosse aufwand darstellen kann???

Danke im Voraus!
Alex
 
J

Jino

Gast
Wildcard hat gesagt.:
Danke für die Rasche reaktion!

Das ist eine gute Idee, die Fragen sind aber kann man den Header mit den Buchstaben deaktivieren? und die Zelle Rechteckig defenieren? wie kann man auf die Zelle wieder zugreifen?weil ich die Farbe nach Wertgrosse änderen, deshalb ist sinnvoll die Zelle zumerken, oder hast du da andere Typ?

Gruss
Alex
 

Wildcard

Top Contributor
-Die Header kannst du natürlich ausschalten
-Die Zellen SIND rechteckig :shock:
-Für die Sache mit der Farbe bietet sich ein eigener Renderer an
 

Marco13

Top Contributor
Ganz subjektiv: Wenn es nur darum geht, ein Rechtecksgitter zu zeichnen, ist eine JTable dafür IMHO ein Overkill. Spätestens, wenn man die Fraben über eigene Renderer implementieren musse, kann man sich sowas auch gleich selbst schreiben, und hat dann eine Klasse, die NUR das macht, was sie sollte, und NUR die Daten enthält, die sei braucht.
 

Wildcard

Top Contributor
@Marco13:
Meiner Meinung nach lohnt sich die Arbeit einach nicht, da es in diesem Fall extrem einfach ist einen Renderer zu schreiben, da die Farbe (soweit ich verstanden habe) direkt von dem double Wert in der Zelle abhängt.
 

Marco13

Top Contributor
Ja, aber eine Klasse von JComponent abzuleiten, die einem sowas zeichnet, ist auch nicht viel schwerer :bae: Das hat auch den Vorteil, dass man sich um viele JTable-spezifika keine Gedanken machen muss - und wenn du dir mal die JTable.java ansiehst, wird dir vielleicht auffallen, dass man damit SEHR SEHR VIEL "Mist" mit sich rumschleppt, den man in diesem Fall nicht braucht.

Es geht sicher beides, aber wenn einer fragen würde: "Ich will ein Farbiges Rechteck in ein JPanel zeichnen, wie geht das?" Würdest du vermutlich auch nicht sagen: "Leg' eine JComponent mit der passenden Background-Farbe auf das Panel". Wenn er aber (indirekt) fragt: "Ich will VIELE farbige Rechtecke auf ein JPanel zeichnen", dann ist der JTable-Vorschlag das gleiche - nur noch etwas "schlimmer"....
 

Wildcard

Top Contributor
Der Grund warum ich zu Standard Komponenten rate, ist das Anfängern das zeichnen in Swing anscheinend große Probleme bereitet.
Das fängt mit Problemen mit dem Layout Manager an (da selbst gezeichnete Komponenten eben nicht einfach so ihre Größe bestimmen), geht weiter mit getGraphics und endet irgendwann mit fehlenden super Aufrufen.
JTable hat den Vorteil das weniger erfahrene Programmierer IMO mit Standardkomponenten besser zurecht kommen.
Wenn du die Sache weiterdenkst ist es bei einem eigenen Grid nur sinnvoll auch die Schrift selbst zu zeichnen (oder aber wieder einen Renderer einzuführen) und plötzlich stehst du vor dem Problem der Ausrichtung. Font Metrics, Berechnungen,...
Das alles erledigt die JTable für dich und ist daher für einen schnellen Erfolg meiner Meinung nach Mittel der Wahl.
 

Marco13

Top Contributor
Oha sorry :oops: hattes das so verstanden, dass wirklich NUR die farbigen Zellen (und nicht die eigentlichen Werte) gezeichnet werden sollen. Wenn man die Zahlen dort auch noch ausgeben soll, hast du recht - dann "lohnt" sich eine JTable schon langsam...
 
J

jino

Gast
Wildcard hat gesagt.:
@Marco13:
Meiner Meinung nach lohnt sich die Arbeit einach nicht, da es in diesem Fall extrem einfach ist einen Renderer zu schreiben, da die Farbe (soweit ich verstanden habe) direkt von dem double Wert in der Zelle abhängt.


Danke Marco und wildcard für die Hilfe!
ich habe mich auch für JTable entschieden, aber leider habe ich auch da ein Problem:

Ich will setValue(Obj) von DefaultTableCellRenderer verwenden, aber ich weiss es nicht, woran liegt, dass die setValue() nicht aufgerufen wird,
ich gehe davon aus, dass die methode setDefaultRenderer(String.class,ren) sich drum kümmert.stimmt das?



so sieht mein Code aus:
Code:
public PaneOfMatrix{

public static JScrollPane getMatrixInPane(double [][] matrix){
	JTable table = MatrixTable.createTable(matrix);
	JScrollPane pane  = new JScrollPane(table);
return pane; 

}


public static JTable createTable(double [][] matrix){
	
	final double [][] data = matrix;
    	final int i = data[0].length - 1;;
	final int j = data.length - 1;;
	final String text ="";
	TableModel model = new AbstractTableModel() {
	    public int getRowCount() { return i; }
	    public int getColumnCount () { return j; }
            public Object getValueAt(int row, int col) {
            	return String.valueOf(data[row][col]).substring(0,1);// String 
            }
        };
        JTable table = new JTable(model);
	ColoredTableCellRenderer ren = new ColoredTableCellRenderer();
        table.setDefaultRenderer( String.class, ren );
	table.getTableHeader().setVisible(false);
    	
	return table;
}


private static  class ColoredTableCellRenderer extends DefaultTableCellRenderer{
		
	public void setValue( Object value ){

	    if ( value instanceof String )
	    {
	    	System.out.println(" setValue(Obj ) " + value);
	    	if(value instanceof String){
	    		double dvalue = Double.parseDouble((String)value);
	    		if(dvalue<4)
	    			setForeground(Color.RED);
	    	}
    		setText((String) value);
	    }
	    else
	      super.setValue( value );
	}
}

}

(vielleicht mache ich doch was falsches?? mein Ziel ist die Farbe für Zelle festzulegen)

Für jede hilfe bin ich sehr dankbar!

Gruss
alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
E Matrix mit JCheckBox AWT, Swing, JavaFX & SWT 29
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M Swing Panel klassenübergreifend ändern AWT, Swing, JavaFX & SWT 6
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H Scroll Panel wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 6
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
S Vaadin: Panel AWT, Swing, JavaFX & SWT 10
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
K Panel zu Laufzeit ändern AWT, Swing, JavaFX & SWT 6
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
S Panel rapaint AWT, Swing, JavaFX & SWT 18
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
M Panel in SWT einfügen AWT, Swing, JavaFX & SWT 12
T auf Panel zeichnen AWT, Swing, JavaFX & SWT 4
A FormLayout Panel-Breite AWT, Swing, JavaFX & SWT 7
Dit_ "Expandable" Panel ? AWT, Swing, JavaFX & SWT 6
A Panel-Unterklasse funktioniert nicht AWT, Swing, JavaFX & SWT 16
A Panel zu klein AWT, Swing, JavaFX & SWT 14
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
S Swing Größe von JLabels verändern sich in einem Panel unterschiedlich AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben