Button Event Fragen

Moin,
gemäß API gibt es in der Klasse java.awt.Button:

public void addActionListener(ActionListener l)
Adds the specified action listener to receive action events from this button. Action events occur when a user presses or releases the mouse over this button. If l is null, no exception is thrown and no action is performed.

Parameters:
l - the action listener
Since:
JDK1.1
See Also:
removeActionListener(java.awt.event.ActionListener), getActionListeners(), ActionListener
 
@Snape

Kann das sein das ich den Button aus der AWT nicht in SWT anzeigen lassen kann ? Denn er erscheint nicht, egal was ich tue ;(
Vorher, als ich den aus der SWT benutzt hatte sah ich ihn.

Mein Code bisher :

Code:
 import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.*;
import java.awt.Button;
 
 
public class te implements ActionListener{
 static Button btn;
 
 public static void main (String [] args) {
  final Display display = new Display ();
  final Shell shell = new te ().open (display);
  Color red = display.getSystemColor(32);
  shell.setBackground(red);
  red.dispose();
  shell.setMaximized(true);
  btn = new Button();
  
  btn.setBounds(200,200,100,50);
  btn.setLabel("HALLO BUTTON");
  btn.setVisible(true);
  btn.setEnabled(true);
  display.setData(btn);
  ActionListener ev = null;
  btn.addActionListener(ev);
  
  while (!shell.isDisposed ()) {
   if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
 }
  
 public Shell open (Display display) {
  Shell shell = new Shell (display);
  shell.open ();
  return shell;
 }
 public void actionPerformed(ActionEvent arg0) {
  Object o = arg0.getSource();
  if(o == btn)
  btn.setText("GEDRÜCKT");  
 }
}

Jemand ne Idee wo mein Button ist, und wenn ja, wie ich das Event abfangen kann ?

Thx & Gruss


MFC OpenGL
 
Moin,
sorry, bei SWT muss ich passen. Allgemein wird empfohlen, AWT, SWT und Swing nicht untereinander zu mischen/kombinieren. Gibt es keinen SWT-Button?
 
Klar gibts nen SWT Button, der klappt ja auch, aber dafür gibts dann die Methode addActionListener nicht. Da gibts nur den MouseListener, und da weiß ich auch nicht wie ich das Event bekomme ;(

Was ist den dann als GUI zu empfehlen ? Swing ?
 
ja, swing is relativ verbreitet und simpel zu benutzen

aber du kannst auch einfach implements MouseListener machen und dann bei der methode mousePressed(MouseEvent me) oder mouseClick(MouseEvent me) so etwas in der art implementieren (ka obs das so in swt gibt, unter swing klappt es)

Code:
...
btn.addMousListener(this)
...
public void mouseClick(MouseEvent me){
Object o = me.getSource();
if(btn==o){
dann mach irgendwas... }
}
...

so sollte das auch gehn falls swt es so unterstützt...
 
Ich lach mich schlapp...

Da hab ich gerade den ActionListener komplett entfernt und gegen MouseListener ersetzt, jetzt kennt er auf einmal die addActionListener !?

@bl4ck29

"btn.addMousListener(this)"

Wie soll das gehen ? Der verlangt doch ein Object vom Typ MouseListener als Übergabeparameter. Da kann ich doch nicht "this" schreiben.
Aber ich kann auch nicht einfach ein anderes neues MouseListener Object anlegen, da es keinen Construktor gibt...

Sorry wenn ich so dumm Frage, und das nicht verstehe, aber das KANN doch so garnicht klappen, oder ?
 
die listener werden normal über implements (in swing zumindest) in die klasse eingebunden oder du erstellst zentral nen object was von actionlistener erbt und was alle actions behandelt...

kann sein das swt das anders macht..

Code:
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.WindowConstants;
public class ButtonExample1 extends javax.swing.JFrame implements MouseListener{
	private JButton button;
  
 public ButtonExample1() {
  super();
  initGUI();
 }
 private void initGUI() {
  try {
			button = new JButton("nich gedrückt");
			button.addMouseListener(this);
			this.add(button);
   setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
   pack();
   setSize(400, 300);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 public void mouseEntered(MouseEvent me){
		
	}
	public void mouseClicked(MouseEvent me){
	
	}
	public void mouseExited(MouseEvent me){
		
	}
	public void mousePressed(MouseEvent me){
		Object o = me.getSource();
		if(button==o){
			button.setText("GEDRÜCKT");
		}
	}
	public void mouseReleased(MouseEvent me){
		Object o = me.getSource();
		if(button==o){
			button.setText("nich gedrückt");
		}
	}
	public static void main(String[] args) {
		ButtonExample1 inst = new ButtonExample1();
		inst.setVisible(true);
	}
}
 
Zuletzt bearbeitet:
Für alle die auch Probleme beim Einstieg in SWT haben :

http://gnu.buildtolearn.net/documentation/swt/download/swt-tutorial-single.zip

Das kann ich nur empfehlen, ist sehr gut aufgebaut und mit vielen Beispielen !


Und wer eine SWT Lösung zu meinem Problem sucht :

Code:
 import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.*;
 
 
public class te {
 static Button btn;
 
 public static void main (String [] args) {
  final Display display = new Display ();
  final Shell shell = new te ().open (display);
  Color red = display.getSystemColor(32);
  shell.setBackground(red);
  shell.setText("TEST PROGGI ;)");
  red.dispose();
  shell.setMaximized(true);
  btn = new Button(shell, 0);
  
  btn.setBounds(200,200,100,50);
  btn.setText("HALLO BUTTON");
  btn.setVisible(true);
  btn.setEnabled(true);
  display.setData(btn);
  btn.addSelectionListener(new SelectionListener(){
   public void widgetSelected(SelectionEvent e) {
	// TODO Auto-generated method stub
	Label lbl = new Label(shell, 0); 
	lbl.setBounds(50,50,60,30);
	lbl.setText("TEST");
   }
   public void widgetDefaultSelected(SelectionEvent e) {
	// TODO Auto-generated method stub
	}
  });
  btn.setFocus();
	
  while (!shell.isDisposed ()) {
   if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
 }
  
 public Shell open (Display display) {
  Shell shell = new Shell (display);
  shell.open ();
  return shell;
 }
}

Das müsste eine sein ;)


Gruss und nochmal Danke an alle die geholfen haben !

MFC OpenGL
 
Zurück