On 01/21/2015 11:06 PM, Jerry Stuckle wrote:
Hi, all
Well, I'm just getting back into java after about a 15 year hiatus.  I
did a bunch of it back then, both SE and EE, but then got off on other
projects.
Now I want to get my fingers back into it and see massive changes.  It's
going to take a log of getting used to.
For instance, I was looking at a game I wrote back then (nothing fancy -
just something to play with).  With Swing it's very easy to change the
look of buttons by loading a new image, i.d. when the player presses the
button.  It seems with fx the only way you can change the button when
it's pressed/not pressed is via css.  While I guess there are advantages
to doing it this way, I haven't seen them yet.  And I'd rather be able
to control the button looks myself.
So my first question is - are there events I can intercept to tell when
the button is pressed and when it is released?  All I see so far is the
ACTION event.
And I'll also ask a short question with I suspect long (and very
subjective) answers.  Which IDE do you like for developing Java apps,
and why?  Most will be standalone gui apps for now.  And please - I know
which IDE can be almost a religious discussion - let's not commit any
sins against other IDE's :)
Swing, and JavaFX classes that work alike.
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class HellowSwing extends JFrame {
  public HellowSwing() {
    JButton btn = new JButton("HelloSwing");
    btn.setIcon(new ImageIcon("/home/jeff/bomb_fuse_unlit.png"));
    btn.setPressedIcon(new ImageIcon("/home/jeff/bomb_fuse_lit.png"));
    btn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
          System.out.println("Button Clicked");
      }
  });
    add(btn);
    pack();
    setTitle("HellowSwing");
    setSize(300, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
  }
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      @Override
      public void run() {
        new HellowSwing().setVisible(true);
      }
    });
  }
}
**************************************************
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFx extends Application {
  @Override
  public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("HellowFX");
    btn.setGraphic(new ImageView("file:///home/jeff/bomb_fuse_unlit.png"));
    btn.armedProperty().addListener(new ChangeListener<Boolean>() {
      @Override
      public void changed(ObservableValue<? extends Boolean> observable,
          Boolean oldValue, Boolean newValue) {
        if(oldValue == false && newValue == true) {
          btn.setGraphic(new
ImageView("file:///home/jeff/bomb_fuse_lit.png"));
        }
        if(oldValue == true && newValue == false){
          btn.setGraphic(new
ImageView("file:///home/jeff/bomb_fuse_unlit.png"));
        }
      }
    });
    btn.setOnAction(new EventHandler<ActionEvent>() {
      @Override public void handle(ActionEvent e) {
          System.out.println("Button Clicked");
      }
  });
    StackPane root = new StackPane();
    root.getChildren().add(btn);
    Scene scene = new Scene(root, 300, 250);
    primaryStage.setTitle("HelloFX");
    primaryStage.setScene(scene);
    primaryStage.show();
  }
  public static void main(String[] args) {
    launch(args);
  }
}
Which is NOT the same - but you're too stoopid to understand that.
Trolls are like that, however.
JButton.setPressedIcon() - doesn't do the same thing.
Jeff, all you're doing is further making a fool of yourself.  And after
your previous updates, that's pretty hard to do.