import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * * @author Russell Glasser * */ public class ActionFrame extends JFrame implements ItemListener, ActionListener, Runnable { private static final long serialVersionUID = 1L; private Map colorMap; private JTextArea txtUrl, txtContent; private JButton btnGo; private boolean pageLoading; /** * Set up the frame * * @param title * Title of the page */ public ActionFrame(String title) { super(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pageLoading = false; JPanel colorPanel, urlPanel; colorPanel = new JPanel(); colorPanel.setOpaque(false); colorPanel.add(new JLabel("Set background color: ")); JComboBox colorSelect = createColorSelect(getContentPane() .getBackground()); colorPanel.add(colorSelect); add(colorPanel, BorderLayout.NORTH); urlPanel = new JPanel(); urlPanel.setOpaque(false); urlPanel.add(new JLabel("Enter URL: ")); txtUrl = new JTextArea(1, 30); txtUrl.setText("http://www.google.com"); urlPanel.add(txtUrl); btnGo = new JButton("Go!"); urlPanel.add(btnGo); btnGo.addActionListener(this); txtContent = new JTextArea(15, 40); JScrollPane scroll = new JScrollPane(txtContent); urlPanel.add(scroll); add(urlPanel, BorderLayout.CENTER); } public JComboBox createColorSelect(Color defaultColor) { colorMap = new HashMap(); JComboBox colorSelect = new JComboBox(); colorSelect.addItem("default"); colorSelect.addItem("red"); colorSelect.addItem("orange"); colorSelect.addItem("yellow"); colorSelect.addItem("green"); colorSelect.addItem("blue"); colorSelect.addItem("purple"); colorSelect.addItem("black"); colorSelect.addItemListener(this); colorMap.put("default", defaultColor); colorMap.put("red", Color.red); colorMap.put("orange", new Color(255, 150, 0)); colorMap.put("yellow", Color.yellow); colorMap.put("green", new Color(0, 200, 0)); colorMap.put("blue", Color.blue); colorMap.put("purple", new Color(180, 0, 200)); colorMap.put("black", Color.black); return colorSelect; } @Override public void itemStateChanged(ItemEvent e) { String col = (String) e.getItem(); if (e.getStateChange() == 1) { Color newColor = colorMap.get(col); getContentPane().setBackground(newColor); System.out.println("Set color to " + newColor + "!"); repaint(); } } @Override public void actionPerformed(ActionEvent e) { String url = txtUrl.getText(); if (!pageLoading) { txtContent.setText("Loading URL " + url + "..."); pageLoading = true; new Thread(this).start(); } else { txtContent.setText("Still loading URL "+url+" (be patient!)"); } } @Override public void run() { String url = txtUrl.getText(); txtContent.setText(Utils.getWebPage(url)); pageLoading = false; } }