Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[]

baphomet13

Mitglied
Liebe Alle,

wie bekomme ich die RenderingHints.Keys, die vom Typ TEXT_* (also die Keys) sind in einen Array? Und von welchem Type wäre dieser Array? Weiterhin möchte ich einen Object-Array erstellen, aus allen RenderingHints.Keys, die Objekte sind, also VALUE_*.

RenderingHints.Key ist ja eine Klasse, allerdings würde getMethods maximal die Methoden geben, nicht aber die Keys.

Hat jemand einen Hinweis?

Danke & Grüße,
B13
 

faetzminator

Gesperrter Benutzer
Du kannst sie einfach in ein Array speichern. [c]new Object[] { RenderingHints.Key.KEY_RENDERING, ... };[/c] Damit hättest du ein Array von Objects.
[c]getMethods()[/c] - falls damit Reflection gemeint ist - gibt auch Methoden und keine Variablen zurück, dafür bräuchtest du [c]getFields()[/c].
 

baphomet13

Mitglied
Du kannst sie einfach in ein Array speichern. [c]new Object[] { RenderingHints.Key.KEY_RENDERING, ... };[/c] Damit hättest du ein Array von Objects.

Das dachte ich auch, aber Eclipse stöhnt bei

Java:
rhTextAAVals = new Object[] {RenderingHints.Key.VALUE_TEXT_ANTIALIAS_ON, RenderingHints.Key.VALUE_TEXT_ANTIALIAS_OFF};

Code:
VALUE_TEXT_ANTIALIAS_ON cannot be resolved or is not a field

:bahnhof:

Zum Hintergrund: will eine JComboBox damit befüllen und bei itemChanged dann jeweils die RenderingHints anwenden...
 
Zuletzt bearbeitet:

baphomet13

Mitglied
Ah sry, natürlich ohne [c].Key[/c] dazwischen, ist ja [c]static[/c].

Danke, das funktioniert schonmal. Allerdings bekomme ich (sowohl in der JComboBox als auch in einer Testausgabe (s.u.) Textinhalte (String?) zurückgegeben:

Java:
rhTextAAVals = new Object[] {RenderingHints.VALUE_TEXT_ANTIALIAS_ON, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF};
boxRendVal = new JComboBox(rhTextAAVals);
boxRendVal.addItemListener(this);
...
 public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() != ItemEvent.SELECTED) {
            return;
        }
        if (e.getSource() == boxRendVal) {
        	renderingArea.setRh1(boxRendVal.getSelectedItem());
        	System.out.println(renderingArea.getRh1());
        }

Code:
// Console Output
Nonantialiased text mode
 

baphomet13

Mitglied
Danke faetzminator,

ich glaube ich war nicht präzise genug. Ich versuche Folgendes zu realisieren (Code unten):
Ich habe einen zweigeteilten JFrame, oben soll es zwei JComboBoxen geben, in denen man den RenderingHints.Key (und zwar einen aus den VALUE_*s) auswählen kann, mit denen ein Text unten dann gerendert werden soll. JComboBox 1 für die KEY_TEXT_ANTIALIASING-Values, JComboBox 2 für die KEY_RENDERING-Values.

Dazu wollte ich:
  1. Die RenderingHints.Keys entsprechend in die JComboBox einlesen (Object[])
  2. per ItemChanged das gewählte Objekt wieder auslesen und in eine Variable speichern
  3. Die RenderingHints des zu rendernden Strings mit Hilfe dieser Variable festlegen, und schließlich
  4. den Canvas mit dem String repaint()en.

Eigentlich wollte ich vermeiden, die Umwandlung in der ItemChanged-Methode per Hand zu machen (der Eleganz wegen), aber vielleicht gibt es dafür dann doch keine andere Lösung. Ich lasse mich aber natürlich sehr gern eines Besseren belehren.

Hier ist der Code der beiden Klassen:
Java:
// DevaRender2D.java

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;

public class DevaRender2D extends JFrame implements ItemListener {
	
	private static CustomCanvas renderingArea;
	private static JPanel optionArea;
	private JPanel optionReturn;
	JComboBox boxRendVal, boxRendQual, boxFontSize;
	private Object[] rhTextAAVals, rhRendVals; 
	
	public static void main(String[] args) {
			DevaRender2D dr2d = new DevaRender2D();
			dr2d.setLayout(new BorderLayout());
			dr2d.setTitle("Rendering with the Java 2D API");
	        dr2d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        dr2d.setExtendedState(dr2d.getExtendedState()|JFrame.MAXIMIZED_BOTH);
	        renderingArea = new CustomCanvas();
	        optionArea = dr2d.createOptionArea();
	        dr2d.add(optionArea,BorderLayout.NORTH);
	        dr2d.add(renderingArea,BorderLayout.CENTER);
	        dr2d.pack();
			dr2d.setVisible(true);
			dr2d.setExtendedState(JFrame.MAXIMIZED_BOTH); 
	}

	private JPanel createOptionArea() {
		optionReturn = new JPanel();
		rhTextAAVals = new Object[] {RenderingHints.VALUE_TEXT_ANTIALIAS_ON, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF};
		boxRendVal = new JComboBox(rhTextAAVals);
		boxRendVal.addItemListener(this);
		rhRendVals = new Object[] {RenderingHints.VALUE_RENDER_SPEED, RenderingHints.VALUE_RENDER_QUALITY, RenderingHints.VALUE_RENDER_DEFAULT };
		boxRendQual = new JComboBox(rhRendVals);
		optionReturn.add(boxRendVal);
		optionReturn.add(boxRendQual);
		return optionReturn;
	}
	
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() != ItemEvent.SELECTED) {
            return;
        }
        if (e.getSource() == boxRendVal) {
        	renderingArea.setRh1(boxRendVal.getSelectedItem()); 
        	System.out.println(renderingArea.getRh1());
        } 
        if (e.getSource() == boxRendQual) {
            renderingArea.setRh2(boxRendQual.getSelectedItem());
        }
        renderingArea.repaint();
    }

		
} // end class

Java:
// CustomCanvas.java
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

public class CustomCanvas extends Canvas {

	String str1 = "\u0932";
	private RenderingHints.Key rk1, rk2;
	private Object rh1, rh2;

	public CustomCanvas() {
		// TODO Auto-generated constructor stub
	}

	public void paint(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		renderText(g2, getRh1(), getRh2());
		}

         /**
	 * @return the rh1
	 */
	public Object getRh1() {
		return rh1;
	}

	/**
	 * @param rh1 the rh1 to set
	 */
	public void setRh1(Object rh1) {
		this.rh1 = rh1;
	}

	/**
	 * @return the rh2
	 */
	public Object getRh2() {
		return rh2;
	}

	/**
	 * @param rh2 the rh2 to set
	 */
	public void setRh2(Object rh2) {
		this.rh2 = rh2;
	}

public void renderText(Graphics2D g2, Object rh1, Object rh2) {
    g2.setColor(Color.white);
    g2.fillRect(0, 0, getWidth(), getHeight());
	g2.setColor(Color.black);
	Font f = new Font(null,Font.ROMAN_BASELINE,20);
	g2.setFont(f);
    int y = 80;
    rk1 = RenderingHints.KEY_TEXT_ANTIALIASING;
    this.rh1 = rh1;
    rk2 = RenderingHints.KEY_RENDERING;
    this.rh2 = rh2;
    RenderingHints rh = new RenderingHints(null);
    rh.put(rk1, getRh1());
    rh.put(rk2, getRh2());
    g2.setRenderingHints(rh);
    g2.drawString(str1, 50, y);
}
	
} // end class

Danke & Grüße,
B13
 

faetzminator

Gesperrter Benutzer
Nunja, das *sollte* eigentlich funktionieren, denn immerhin gibt [c]getSelectedItem()[/c] ein Object zurück. Da ich aber nicht ein grossartiger Swing-User bin, kann ich dir da nicht weiterhelfen. Arbeite mit dem Debugger in der IDE, schau dir an, was in der ursprünglichen Variable stand (und von was für einem Typen sie ist) und was dann in [c]itemStateChanged()[/c] von den jeweiligen Methoden zurückgegeben wird.
 

baphomet13

Mitglied
Hab's jetzt gelöst, indem ich die JComboBoxes mit String[]s gefüllt habe und eine kurze if-Abfrage für jede Option in die ItemChanged Methode aufgenommen habe, die dann den entsprechenden RenderingHint.Key in eine Variable settet.

Trotzdem bleibt die Frage (wenn auch nicht der Thread) natürlich offen. Ich bekomme (auch in der JComboBox) einen String angezeigt, der so etwas wie die Meta-Information zum jeweiligen Key ist, z.B. "Nonantialiased text mode" und der sich auch per drawString() darstellen lässt... Sollte sich hier jemand besser auskennen, bitte gerne Thread wiedereröffnen und Infos teilen. Danke!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
_user_q Alle Kombinationen von "0000" bis "FFFF" kompakt schrieben Allgemeine Java-Themen 13
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
L Farbverlauf RGB alle Farben Allgemeine Java-Themen 28
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
MaxG. Best Practice Alle Kombinationen berechnen Allgemeine Java-Themen 3
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
I Alle logs von Logger bekommen Allgemeine Java-Themen 3
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
L Alle möglichen Additionen (Rekursiv) Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Seikuassi Alle Escape-Sequenzen in einem String ersetzen Allgemeine Java-Themen 4
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
Sogomn Klassen Alle in eine Klasse Allgemeine Java-Themen 11
P Methoden Alle Kombinationen aus 2 Karten berechnen Allgemeine Java-Themen 2
B Threads Barrier mit wait()/notify() aber nicht alle Prozesse terminieren Allgemeine Java-Themen 2
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
C SwingWorker.cancle(true) tötet alle Worker Allgemeine Java-Themen 3
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
T Alle Instancen einer Klasse auflisten Allgemeine Java-Themen 13
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
brunothg Alle Kombiationen von n Ziffern Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
E Logger loggt nicht alle Level Allgemeine Java-Themen 2
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
F Alle Exceptions abfangen Allgemeine Java-Themen 4
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
A Bildschirmauflösung geändert - alle Bildschirminhalte verschoben - was tun? Allgemeine Java-Themen 7
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
S Warum packt er nicht alle Dateien? Allgemeine Java-Themen 13
J Alle Tage eines Jahres Allgemeine Java-Themen 2
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
Spot84 alle kombinationen einer string arraylist Allgemeine Java-Themen 2
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
J Konstrukt um alle Paare und Tripel einer Punkte-Menge bilden Allgemeine Java-Themen 12
B Alle möglichen Buchstabenkombinationen in einem String Allgemeine Java-Themen 7
P alle zusammanhaengenden teilgraphen Allgemeine Java-Themen 7
A alle nicht-dplikate finden Allgemeine Java-Themen 14
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
M alle möglichen Zahlenkombinationen Allgemeine Java-Themen 5
B in welchem verzeichnis liegen alle installierten klassen? Allgemeine Java-Themen 6
hdi Für alle fleissigen Helfer! Allgemeine Java-Themen 15
N Alle Fehler ausgeben? Allgemeine Java-Themen 4
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
O Auf alle Events reagieren Allgemeine Java-Themen 3
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
U alle Dateien eines Ordners innerhalb einer JAR auflisten Allgemeine Java-Themen 6
S toString() für alle Member einer Klasse. Allgemeine Java-Themen 6
G Alle möglichen Konfigurationen eines Baumes Allgemeine Java-Themen 4
C Alle Möglichen Substrings der Länge k aus String extrahieren Allgemeine Java-Themen 9
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
G Alle möglichen Permutationen einer Folge n Allgemeine Java-Themen 3
V Alle Klassen eines Package auflisten? Allgemeine Java-Themen 6
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
@ RegEx: Alle Sonderzeichen ausser dem Punkt Allgemeine Java-Themen 4
G Alle Möglichen Kombinationen einer Liste Allgemeine Java-Themen 11
H Alle möglichen Hochkommata ausschließen Allgemeine Java-Themen 6
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
N Unter Mac Os X alle laufenden Prozesse ausgeben Allgemeine Java-Themen 3
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
P Observer, nicht alle updates bearbeiten Allgemeine Java-Themen 2
der JoJo [TreeSelection] wie bekomme ich alle Elemente Allgemeine Java-Themen 4
G Alle Zeichen des Alphabets ausgeben Allgemeine Java-Themen 4
G Alle Möglichkeiten n Elemente Anzuordnen. Allgemeine Java-Themen 13
0 Alle Teiler einer Zahl performant berechnen? Allgemeine Java-Themen 9
J Funktion alle Möglichkeiten berücksichtigen Allgemeine Java-Themen 5
O Warten bis alle gestarteten Threads beendet sind? Allgemeine Java-Themen 6
G HTML file Alle relativen URL in absolute URL umschreiben? Allgemeine Java-Themen 12
D FileWriter, PrintWriter und wie sie alle heißen. Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben