@FXML
private Button btn1;
Image img = new Image("/images/2013-07-14_14-40-17_89.jpg");
ImageView iv = new ImageView();
iv.setImage(img);
Rectangle2D viewportRect = new Rectangle2D(100, 250, 50, 50);
iv.setViewport(viewportRect);
btn1.setGraphic(iv);
You can load one Image and create an ImageView (a Node) for every button. The ImageView picks a view port rectangle inside the large image.
To create a single file from several images, something like:
BufferedImage totalImage = new BufferedImage(...);
Graphics2D g = totalImage.createGraphics();
String[] files = { ... };
for (int i = 0; i < files.length; ++i) {
BufferedImage img = ImageIO.read(files[i]);
int x = i * 75;
int y = 0;
g.drawImage(x, y, img, ...);
}
ImageIO.write(totalImage, ...);
g.dispose();