Hallo!
Ich stehe vor einem sehr kniffligen Problem...
Ich möchte das Event abfangen, das einen Button bzw. ToggleButton dazu veranlasst, das er sich eindrückt...
Mit der Methode setEnabled(false); kann ich den Button ausschalten, so dass er nicht mehr geklickt werden kann...aber dann ist er eingegraut, das kann ich nicht gebrauchen...
Ich möchte selbst einen Status für den Button erstellen und dann wenn der Button geklickt wird abgefragt wird ob er noch geklickt werden darf und dann wenn er es nicht darf soll gar nichts mehr passieren...
Ich hoffe das war halbwegs verständlich?
Vielleicht weiß jemand wo der Klick wirklich passiert?
Ist sehr knifflig, ich weiß...
Lg.
java-girl
Wo wird ein Button geklickt?
-
-
warum machst dus nicht im actionPerformed()?
-
Blah weil im actionPerformed(); der Button schon längst geklickt wurde...es geht darum dass er sich nicht bewegt...
-
aso
du kannst dem JButton statt einen ActionListener auch einen MouseListener hinzufügen und dann mouseClicked() abfangen -
Nein geht nicht.
-
was geht nicht?
das du ihn nicht hinzufügen kannst oder das mouseClicked() aufgerufen wird? -
Nocheinmal: Ich habe gesagt das ich möchte das der Button sich nicht mehr rührt und nicht einfach nur die Events disablen...es geht nicht so! Ich arbeite ja schon mit einem MouseListener weil ich den Rechtsklick brauche
-
vielleicht gehts indem du von JButton ableitest und die Methode überschreibst die den Button zeichnet(paintComponent()?)
-
Vielleicht musst du das Buttonmodel bzw. dessen Methoden ändern, habe jetzt aber keine Zeit, mir das genauer anzuschauen...
-
@ keinWunder: das war mein erster Ansatz aber das geht nicht weil das Zeichnen von der UI übernommen wird und ich dann die UI neu schreiben müsste.
@ psycho: du brauchst es dir auch nicht näher anschauen, wollt nur wissen ob vielleicht irgendjemand Ahnung davon hat....:(
-
-
Hm danke aber ich brauche das für einen JToggleButton und bei dem funzts nicht
-
Zitat von java-girl
ich brauche das für einen JToggleButton und bei dem funzts nicht
why not?
Java
Alles anzeigenimport java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JToggleButton; import javax.swing.WindowConstants; public class ButtonTest extends javax.swing.JFrame { private JToggleButton jToggleButton1; /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { ButtonTest inst = new ButtonTest(); inst.setVisible(true); } public ButtonTest() { super(); initGUI(); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jToggleButton1 = new JToggleButton(); getContentPane().add(jToggleButton1, BorderLayout.CENTER); jToggleButton1.setText("jToggleButton1"); jToggleButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jToggleButton1ActionPerformed(evt); } }); } pack(); setSize(400, 300); } catch (Exception e) { e.printStackTrace(); } } private void jToggleButton1ActionPerformed(ActionEvent evt) { if(jToggleButton1.getSelectedObjects()==null) { jToggleButton1.setText("<html><font color=\"black\">"+jToggleButton1.getText()+"</font></html>"); jToggleButton1.setEnabled(false); } } }
der button lässt sich bei mir einmal selektieren und wieder deselektieren, und dann lässt er keine aktion mehr zu; beschriftung ist weiterhin schwarz. wenn du das if in der handler-methode rausnummst, dann kannst du ihn reindrücken, und dann ist schluss.
-
Nein es geht nicht. Probier das einmal mit Icons, die bleiben weiterhin eingegraut...
-
Nur so aus Interesse - warum darf der Button nicht disabled und damit grau werden? Das wär doch eigentlich genau das, was jemand erwartet, der auf einen knopf drückt... Muss ja nicht button.setEnabled(false) sein, elegant wär sicher auch, die isDisabled() - Methode zu überlagern und durch eigenen Code zu ersetzen.
-
ICh brauche das weil ich Minesweeper schreibe...
Und...ich diese Methode zu überlagern bringt nichts...hab schon alles probiert...:( -
-
Sorry ich hätte gedacht es gäbe mit der Schrift das gleiche Problem...
Na ja meiner Ansicht nach ist wirklich die einzige Möglichkeit das Event, das den Button ein-/ausrasten läßt abzufangen aber welches ist das?...*seufz*...
Hat irgendjemand eine Idee? -
-
Ich glaubs nicht...DAAAANKE es geht!!!!!!!!!!!!!
Mein Professor und ich haben über 1 1/2 Stunden nach einer Lösung gesucht und das ist sie...und sie war soo einfach!!
Danke vielmals!!! Auf die Idee wär ich nie im Leben gekommen!!! -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!