AbstractAction, wann benutzen?

Status
Nicht offen für weitere Antworten.

manuel1139

Mitglied
Hallo!

Ich habe mich gerade gefragt für was bzw. wann man eine AbstractAction benutzt?

Sinn dieser Klasse ist ja wohl einerseits das wenn ein Button gedrückt wird die
actionPerformed Methode aufgerufen wird. Hier macht ja auch der Name "AbstractAction" sinn.

Jetzt geht das ganze aber weiter und die Eigenschaften meiner Buttons über dieses Objekt eingestellt.
D.h. der Text sowie enabled/disabled werden über das AbstractAciton Objekt geändert.

Jetzt sollen meine Buttons noch mehr machen - nämlich die Hintergrundfarbe rot/grün und blau annehmen -
Also hab ich meine AbstractAction erweitert und schicke ihr einen Event aufgrund dem sie jetzt dem Button
eine neue Farbe verleiht.

Meine Frage: Verwende ich die AbstractAction hier so richtig? Oder ist das Konzept der AbstractAction nur auf Menü/Schaltflächen ausgerichtet und ich hätte mir eine extra Klasse einreichten sollen die die Changes abfängt und von dort aus meinen Button verändern?


Code:
public class PotentialAction extends AbstractAction implements ChangeListener {

	private static final Color	yellow				= new Color(235, 235, 100);

	private static final Color	green				= new Color(100, 235, 100);

	private static final Color	dark_grey			= new Color(159, 154, 167);

	private static final Color	grey				= Color.lightGray;

	private static final Color	red					= new Color(235, 100, 100);

	private static final long	serialVersionUID	= 1L;
	Potential					potential;
	JButton						button;

	public PotentialAction(Potential potential, JButton button) {
		super();
		this.potential = potential;
		this.button = button;
		setValues();
	}

	public void actionPerformed(ActionEvent e) {
		potential.showPotentialDetails();
	}

	public void stateChanged(ChangeEvent e) {
		setValues();
	}

	private void setValues() {
		this.setEnabled(potential.getEnabled());
		this.putValue(NAME, getName());

		if (!isEnabled()) {
			button.setForeground(Color.GRAY);
		}

		if (potential.haveSPF()) {
			float spf = potential.getSPF().floatValue();
			if (spf >= 3.0f) {
				button.setBackground(red);
			} else if (spf >= 2.0f) {
				button.setBackground(yellow);
			} else {
				button.setBackground(green);
			}
		} else {
			button.setBackground(dark_grey);
		}
	}

	private String getName() {

		String text = "<html><center>" + potential.getDescr() + "
";

		if (potential.getEnabled()) {
			text += "<center>" + potential.getSPF() + "</html>";
		}
		return text;
	}
 

Wildcard

Top Contributor
Also den Button sollte die Action keinesfalls kennen. Sie dient dazu, eine bestimmte Aktion an mehreren Stellen konsistent zu verwenden (gleiche Optik, gleiches Verhalten).
 

manuel1139

Mitglied
Wildcard hat gesagt.:
Also den Button sollte die Action keinesfalls kennen. Sie dient dazu, eine bestimmte Aktion an mehreren Stellen konsistent zu verwenden (gleiche Optik, gleiches Verhalten).

Damit schließt sich meine Lösung wohl aus... Vielen Dank!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Neuzeichnen bei AbstractAction AWT, Swing, JavaFX & SWT 4
G JMenuItem & AbstractAction = Problem? AWT, Swing, JavaFX & SWT 2
G Problem mit AbstractAction und Shortcut AWT, Swing, JavaFX & SWT 14
G Verhindern, das AbstractAction Text und Icons überschreibt? AWT, Swing, JavaFX & SWT 3
G AbstractAction und Schriftfarbe AWT, Swing, JavaFX & SWT 6
F JPopupMenu und AbstractAction AWT, Swing, JavaFX & SWT 2
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
R wann liefert getEditingRow was brauchbares ? AWT, Swing, JavaFX & SWT 2
K Swing Wann benötigt man JFrames? AWT, Swing, JavaFX & SWT 5
M SWT /Jface Wann einen ColumnLabelProvider benutzen? AWT, Swing, JavaFX & SWT 2
S validate(), invalidate(), repaint(),... Was kommt wann? AWT, Swing, JavaFX & SWT 5
B Swing JScrollPane - observen wann eine JScrollBar angezeigt wird? AWT, Swing, JavaFX & SWT 5
H AWT Wann ist paint() fertig? AWT, Swing, JavaFX & SWT 7
S Listener der mich informiert wann immer einer Liste ein Element hinzugefuegt wird? AWT, Swing, JavaFX & SWT 4
I Swing Wann invokeLater() verwenden? AWT, Swing, JavaFX & SWT 7
G Abfragen, wann JFrame dargestellt ist AWT, Swing, JavaFX & SWT 3
H Benachrichtigt werden wann ein Container repainted wird? AWT, Swing, JavaFX & SWT 5
I Wann genau startet der AWT-Thread? AWT, Swing, JavaFX & SWT 3
T Fenster verschieben => Wann fertig? AWT, Swing, JavaFX & SWT 8
S Wann brauche ich die prepareRenderer() Methode ? AWT, Swing, JavaFX & SWT 2
T invokeLater - Wann? AWT, Swing, JavaFX & SWT 29
M Wann AbstractTableModel und wann DefaultTableModel AWT, Swing, JavaFX & SWT 4
M wann wird paintComponent() aufgerufen AWT, Swing, JavaFX & SWT 4
E Problem mit JPanel - Wann wird size berechnet? AWT, Swing, JavaFX & SWT 5
A Swing: Wann ist eine Komponente gezeichnet? AWT, Swing, JavaFX & SWT 2
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
L JavaFX Eigene Font benutzen AWT, Swing, JavaFX & SWT 6
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
B JavaFX Spritesheet benutzen AWT, Swing, JavaFX & SWT 0
K Swing Textfeld verstecken aber benutzen AWT, Swing, JavaFX & SWT 15
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
TheSorm Swing JScroolBar richtig benutzen AWT, Swing, JavaFX & SWT 0
S Swing, Button benutzen zum Hintergrund wechseln AWT, Swing, JavaFX & SWT 3
B Play Button auch als Stop Button benutzen, MP3 Player AWT, Swing, JavaFX & SWT 7
K AWT Welche color benutzen? AWT, Swing, JavaFX & SWT 4
P non-static variablen benutzen AWT, Swing, JavaFX & SWT 7
B Java auf dem Desktop benutzen AWT, Swing, JavaFX & SWT 7
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
C JTree LastSelectedPathComponent benutzen? AWT, Swing, JavaFX & SWT 3
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
Developer_X Java - Grafikkarte benutzen AWT, Swing, JavaFX & SWT 8
T BufferedReader in GUI Benutzen AWT, Swing, JavaFX & SWT 18
T bei einem jtextfield Farben benutzen AWT, Swing, JavaFX & SWT 7
U 2 JDialogs benutzen ein windowClosed()? AWT, Swing, JavaFX & SWT 21
G welches Layout sollte ich benutzen? AWT, Swing, JavaFX & SWT 2
H welche Klasse benutzen? AWT, Swing, JavaFX & SWT 4
M Gesamte Größe benutzen AWT, Swing, JavaFX & SWT 3
R Eclipse RCP: Extension point benutzen? AWT, Swing, JavaFX & SWT 3
S Benutzen einer GUI AWT, Swing, JavaFX & SWT 7
R Im JFrame ein JApplet zum öffnen einer Url benutzen AWT, Swing, JavaFX & SWT 22
B JTextArea als StatusWindow benutzen AWT, Swing, JavaFX & SWT 3
G JFace benutzen, aber wie! AWT, Swing, JavaFX & SWT 2
G JButton benutzen um ein neues JFrame zu erstellen AWT, Swing, JavaFX & SWT 3
S gleiche elemente öffters benutzen AWT, Swing, JavaFX & SWT 10
I JLabel als Button benutzen AWT, Swing, JavaFX & SWT 16
D AppletCode als JAR aus JSP benutzen und als Grafik speichern AWT, Swing, JavaFX & SWT 2
Z FileChooer auch mit SWT benutzen? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben