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.