Re: FlowLayout and lightweight IDEs
In article
<d5aba646-81e6-457b-8666-3b9fca8e9742@2g2000hsn.googlegroups.com>,
bH <bherbst65@hotmail.com> wrote:
[...]
This is the corrected program fixing the errors that I questioned
about above. It is no longer quirky.
Thank you for following up. Your program is much improved, although I
confess I changed the pink Canvas to a light gray and added a call to
clearRect() in paint(). Although FlowLayout is reliable, I hope you have
a chance to experiment with alternative layouts.
Inspired by your program, I offer another Google application: the
GoogleOlympiad!
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* @author John B. Matthews
*/
public class GoogleOlympiad
extends JPanel implements ActionListener {
private static final String prefix =
"http://www.google.com/logos/olympics08_";
private static final Border border =
BorderFactory.createMatteBorder(4, 16, 4, 16, Color.lightGray);
private static final Cursor defaultCursor =
new Cursor(Cursor.DEFAULT_CURSOR);
private static final Cursor waitCursor =
new Cursor(Cursor.WAIT_CURSOR);
private ArrayList<String> list = new ArrayList<String>();
private JLabel imageLabel = new JLabel();
private JButton quitButton = new JButton();
private ImageIcon image = new ImageIcon();
private JComboBox favorites;
public GoogleOlympiad() {
this.setLayout(new BorderLayout());
list.add("opening.gif");
list.add("cycling.gif");
list.add("weightlifting.gif");
list.add("diving.gif");
list.add("rhythm.gif");
list.add("rings.gif");
list.add("basketball.gif");
list.add("badminton.gif");
list.add("soccer.gif");
list.add("rowing.gif");
list.add("curling.gif");
JLabel titleLabel = new JLabel();
titleLabel.setText("The Google Olympiad");
titleLabel.setHorizontalAlignment(JLabel.CENTER);
titleLabel.setFont(new Font("SansSerif", Font.BOLD, 24));
titleLabel.setBorder(border);
this.add(titleLabel, BorderLayout.NORTH);
image.setImageObserver(imageLabel);
imageLabel.setText("Select an image from the list below.");
imageLabel.setHorizontalAlignment(JLabel.CENTER);
imageLabel.setBorder(border);
this.add(imageLabel, BorderLayout.CENTER);
favorites = new JComboBox(
list.toArray(new String[list.size()]));
favorites.setActionCommand("favs");
favorites.addActionListener(this);
quitButton.setText("Quit");
quitButton.setActionCommand("quit");
quitButton.addActionListener(this);
JPanel controlPanel = new JPanel();
controlPanel.add(favorites);
controlPanel.add(quitButton);
controlPanel.setBorder(border);
this.add(controlPanel, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if ("favs".equals(cmd)) {
int index = favorites.getSelectedIndex();
imageLabel.setIcon(getImage(index));
}
if ("quit".equals(cmd)) {
System.exit(0);
}
}
private ImageIcon getImage(int index) {
this.setCursor(waitCursor);
try {
image = new ImageIcon(new URL(prefix + list.get(index)));
} catch (MalformedURLException e) {
System.err.println(e.toString());
}
if (image.getImageLoadStatus() == MediaTracker.COMPLETE) {
imageLabel.setText("");
} else {
imageLabel.setText("Image not available.");
}
this.setCursor(defaultCursor);
return image;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new GoogleOlympiad());
frame.setTitle("Google Olympiad");
frame.setSize(400, 300);
frame.setVisible(true);
}
});
}
}
[Yes, I know curling is not featured!]
--
John B. Matthews
trashgod at gmail dot com
home dot woh dot rr dot com slash jbmatthews