Re: Trying to get JComboBox to "repopulate" with increased java.util.Vector
Knute, I don't know how to make this any simpler than I have! If I
remove much more, than I will not be duplicating the problem, I'll
just duplicating someone else's code altogether! Please, I'm trying!
package com.ppowell.tools.ObjectTools;
import java.io.*;
import java.awt.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
public class SimpleBrowser
extends JFrame
implements
Serializable {
private String urlPath;
private URL url;
private GridBagConstraints c;
private JPanel p1;
private JPanel p2;
private JButton b;
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 SimpleBrowser() {
super();
setupSimpleBrowser();
}
//--------------------- --* 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;
}
private void setWebBrowserURL() {
try {
URL url = getURL();
String urlPath = getURLPath();
if (url != null) {
browser.setURL(url);
} else if (urlPath != null && !urlPath.equals("")) {
browser.setURL(new URL(urlPath));
} else {
browser.setURL(new
URL(SimpleBrowser.DEFAULT_URL_PATH));
}
} catch (Exception e) {
e.printStackTrace();
try {
browser.setURL(new
URL(SimpleBrowser.DEFAULT_URL_PATH));
} catch (Exception e2) {
e2.printStackTrace();
return;
}
}
}
//--------------- --* 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);
c.gridx = 0;
c.gridy++;
c.anchor = GridBagConstraints.CENTER;
add(p2, 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');
b.setFont(SimpleBrowserGlobals.FONT);
}
private void generateJComboBox() {
if (SimpleBrowser.hasAddedInitialURL && historyURLVector !=
null && historyURLVector.size() > 0) {
webAddressBox = new JComboBox(historyURLVector);
} else if (SimpleBrowser.hasAddedInitialURL) {
webAddressBox = new JComboBox();
}
if (getScreenWidth() == 0)
setScreenWidth(SimpleBrowser.DEFAULT_SCREEN_WIDTH);
Dimension dim = new Dimension((int)(getScreenWidth() / 1.14),
(int)(SimpleBrowser.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(SimpleBrowser.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(SimpleBrowser.DEFAULT_URL_PATH);
historyURLVector = new Vector<URL>();
bookmarkURLVector = new Vector<URL>();
try {
addToHistoryURLVector();
SimpleBrowser.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(SimpleBrowser.DEFAULT_SCREEN_WIDTH);
p1.setSize(new Dimension(getScreenWidth(),
SimpleBrowser.DEFAULT_WEB_ADDRESS_BAR_HEIGHT));
p1.setOpaque(true);
p1.setBackground(Color.WHITE);
p1.setVisible(true);
}
protected void processURL() {
SimpleBrowser.hasEnteredAdditionalURL = true;
SimpleBrowser.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 setupSimpleBrowser() {
initObjects();
initComponents();
}
public void showFrame() {
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}