Re: Trying to get JComboBox to "repopulate" with increased java.util.Vector
package com.ppowell.applications;
import java.io.*;
import java.awt.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
public class Blah
extends JFrame
implements
Serializable {
private String urlPath;
private URL url;
private GridBagConstraints c;
private JPanel p1;
private JButton b;
private String myName = "Blah";
protected int screenWidth = 0;
protected int screenHeight = 0;
protected JComboBox webAddressBox;
protected Vector<URL> historyURLVector;
private static boolean hasAddedInitialURL = false;
private static boolean hasEnteredAdditionalURL = false;
protected static final String DEFAULT_URL_PATH = "http://
java.net";
protected static final int DEFAULT_SCREEN_WIDTH =
(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
protected static final int DEFAULT_SCREEN_HEIGHT =
(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
protected static final int DEFAULT_WEB_ADDRESS_BAR_HEIGHT = 50;
//-------------------------- --* CONSTRUCTORS
*------------------------------
public Blah() {
super();
setupBlah();
}
//--------------------- --* GETTER/SETTER METHODS
*----------------------------
private int getScreenHeight() {
return this.screenHeight;
}
private int getScreenWidth() {
return this.screenWidth;
}
private URL getURL() {
return this.url;
}
private String getURLPath() {
return this.urlPath;
}
private void setScreenHeight(int screenHeight) {
this.screenHeight = screenHeight;
}
private void setScreenWidth(int screenWidth) {
this.screenWidth = screenWidth;
}
private void setURL(String urlPath) {
try {
URL url = new URL(urlPath);
setURL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
private void setURL(URL url) {
this.url = url;
}
private void setURLPath(String urlPath) {
this.urlPath = urlPath;
}
//--------------- --* END OF GETTER/SETTER METHODS
*-----------------------
public void addToFrame() {
setLayout(new GridBagLayout());
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.NORTHWEST;
add(p1, c);
}
protected void addToHistoryURLVector() throws Exception {
URL url;
if (getURL() == null) {
url = new URL(getURLPath());
setURL(url);
} else {
url = getURL();
}
if (historyURLVector != null && !
historyURLVector.contains(url)) {
historyURLVector.add(url);
} else if (historyURLVector == null) {
historyURLVector = new Vector<URL>();
historyURLVector.add(url);
}
}
protected void addToHistoryURLVector(URL url) throws Exception {
setURL(url);
addToHistoryURLVector();
}
public void addToPanel() {
layoutTopPanel();
}
private void generateJButton() {
b = new JButton("Go");
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
processURL();
}
};
// WILL ENTER URL ON CTRL-G
b.registerKeyboardAction(listener,
KeyStroke.getKeyStroke(KeyEvent.VK_G,
InputEvent.CTRL_MASK, true),
JComponent.WHEN_IN_FOCUSED_WINDOW);
// WILL ENTER URL ON CR
b.registerKeyboardAction(listener,
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true),
JComponent.WHEN_IN_FOCUSED_WINDOW);
b.addActionListener(listener);
b.setSelected(false);
// WILL ENTER URL ON ALT-G
b.setMnemonic('G');
}
private void generateJComboBox() {
if (Blah.hasAddedInitialURL && historyURLVector !=
null && historyURLVector.size() > 0) {
webAddressBox = new JComboBox(historyURLVector);
} else if (Blah.hasAddedInitialURL) {
webAddressBox = new JComboBox();
}
if (getScreenWidth() == 0)
setScreenWidth(Blah.DEFAULT_SCREEN_WIDTH);
Dimension dim = new Dimension((int)(getScreenWidth() / 1.14),
(int)(Blah.DEFAULT_WEB_ADDRESS_BAR_HEIGHT /
2));
webAddressBox.setMaximumSize(dim);
webAddressBox.setPreferredSize(dim);
webAddressBox.setEditable(true);
webAddressBox.setBackground(Color.WHITE);
/** For more info <a href="https://lists.xcf.berkeley.edu/
* lists/advanced-java/1999-September/000508.html">click here</
a> **/
webAddressBox.setModel(new
DefaultComboBoxModel(historyURLVector));
}
private void initComponents() {
setTitle(myName);
if (getScreenWidth() == 0)
setScreenWidth(Blah.DEFAULT_SCREEN_WIDTH);
generateJComboBox();
generateJButton();
p1 = new JPanel(true);
addToPanel(); // FOR NOW WILL ONLY ADD JPanel p1
addToFrame();
showFrame();
}
private void initObjects() {
if (getURL() == null && getURLPath() == null)
setURLPath(Blah.DEFAULT_URL_PATH);
historyURLVector = new Vector<URL>();
try {
addToHistoryURLVector();
Blah.hasAddedInitialURL = true;
} catch (Exception e) {
e.printStackTrace();
}
}
private void layoutTopPanel() {
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.NORTHWEST;
p1.setLayout(new GridBagLayout());
p1.add(new JLabel("Your URL:"), c);
c.gridx++;
c.gridy = 0;
c.fill = GridBagConstraints.HORIZONTAL;
p1.add(webAddressBox, c); // ADD JComboBox
c.gridx++;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;
p1.add(b, c); // ADD JBUTTON
if (getScreenWidth() <= 0)
setScreenWidth(Blah.DEFAULT_SCREEN_WIDTH);
p1.setSize(new Dimension(getScreenWidth(),
Blah.DEFAULT_WEB_ADDRESS_BAR_HEIGHT));
p1.setOpaque(true);
p1.setBackground(Color.WHITE);
p1.setVisible(true);
}
protected void processURL() {
Blah.hasEnteredAdditionalURL = true;
Blah.hasAddedInitialURL = false;
setURLPath(webAddressBox.getSelectedItem().toString());
try {
addToHistoryURLVector(new URL(getURLPath()));
} catch (Exception e) {
e.printStackTrace();
}
generateJComboBox();
webAddressBox.setSelectedItem(getURL());
p1.remove(webAddressBox);
p1.add(webAddressBox, 1);
p1.revalidate();
remove(p1);
add(p1, 0);
validate();
}
private void setupBlah() {
initObjects();
initComponents();
}
public void showFrame() {
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
Blah blah = new Blah();
}
}