Someone Please Help with this Issue
Hey everyone. I'm new to Java and I'm experimenting with JCombo box in a timesheet program I'm trying to make. Can someone please tell me why, in the following code, if i enter text to the JComboBox and hit enter, it adds an item two times to the list, and creates two buttons, but if i select an item from the list it adds the item back to the list once and only creates one button.
I would prefer to have just one button created as well as have a selection from the drop down list not be added back in. I'm confused as to how to implement this though because it would seem to me that an action listener on the combo box would listen for both the key event and the dropdown selection.
The code
**************
package timesheet;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.Toolkit;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
*
* @author Jamie Snipes
*/
public class Main extends JFrame implements ActionListener{
public static void main(String[] args) {
new Main().setVisible(true);
}
/** Creates a new instance of Main */
public Main() {
initComponents();
pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
setLocation(new Point((screenSize.width - frameSize.width),
(screenSize.height - frameSize.width)/ 6 ));
}
/**
* @param args the command line arguments
*/
private void initComponents() {
mainPanel = new javax.swing.JPanel();
mainPanel.setLayout(new BorderLayout());
eventTrackerPanel = new javax.swing.JPanel();
//eventTrackerPanel.setLayout(new GridLayout(5,1, 5, 5));
projectTitleLabel = new javax.swing.JLabel();
buttonsPanel = new javax.swing.JPanel();
buttonsPanel.setLayout(new BorderLayout());
newItemPanel = new javax.swing.JPanel();
newItemPanel.setLayout(new FlowLayout());
startButton = new javax.swing.JButton("Start");
notesButton = new javax.swing.JButton("Add Note");
stopButton = new javax.swing.JButton("Stop");
menuBar = new javax.swing.JMenuBar();
menuItem= new javax.swing.JMenuItem("Exit");
menu= new javax.swing.JMenu("File");
addTimeSheetItem= new javax.swing.JButton("Add") ;
projectArray= new String[10];
removeProjectButton=new javax.swing.JButton("remove") ;
setTitle("Time Sheet");
//Menu Bar Itmes
// menu.setMnemonic(KeyEvent.VK_A);
// menu.getAccessibleContext().setAccessibleDescription();
menuBar.add(menu);
menuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getSource()==menuItem){
exitMenuItemActionPerformed(evt);
}
}
});
menu.add(menuItem);
setJMenuBar(menuBar);
mainPanel.setLayout(new java.awt.BorderLayout());
mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(5, 5, 5, 5)));
mainPanel.setMinimumSize(new java.awt.Dimension(800, 800));
projectTitleLabel.setText("Project Name:");
//Top Panel
projectNameBox= new javax.swing.JComboBox();
projectNameBox.setEditable(true);
eventTrackerPanel.setLayout(new GridLayout(0,1, 5, 5));
projectNameBox.addActionListener(this);
eventTrackerPanel.add(projectNameBox);
newItemPanel.add(projectNameBox);
newItemPanel.add(addTimeSheetItem);
// buttonsPanel (Bottom) Panel
buttonsPanel.add(startButton, BorderLayout.WEST);
buttonsPanel.add(notesButton, BorderLayout.CENTER);
buttonsPanel.add(stopButton, BorderLayout.EAST);
// Main Panel
mainPanel.add(newItemPanel, BorderLayout.NORTH);
mainPanel.add(eventTrackerPanel, BorderLayout.CENTER);
mainPanel.add(buttonsPanel, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(mainPanel);
getContentPane().setSize(800, 800);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==projectNameBox){
for(int i=0; i<=100; i++){
selectedProjectToggleButton= new javax.swing.JToggleButton[100];
projectArray= new String();
selectedProjectToggleButton= new javax.swing.JToggleButton();
projectArray=(String)projectNameBox.getSelectedItem();
System.out.println(projectArray);
projectNameBox.addItem(projectArray);
selectedProjectToggleButton.setText(projectArray);
eventTrackerPanel.add(selectedProjectToggleButton);
return;
}
}
}
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
// Variables declaration - do not modify
private javax.swing.JPanel buttonsPanel;
private javax.swing.JPanel newItemPanel;
private javax.swing.JPanel eventTrackerPanel;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JLabel feedbackLabel;
public javax.swing.JMenu fileMenu;
private javax.swing.JButton[] buttonArray;
private javax.swing.JButton startButton;
private javax.swing.JButton stopButton;
private javax.swing.JButton notesButton;
private javax.swing.JButton addTimeSheetItem;
private javax.swing.JButton removeProjectButton;
private javax.swing.JLabel projectTitleLabel;
private javax.swing.JPanel mainPanel;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenuItem menuItem;
private javax.swing.JMenu menu;
private javax.swing.JComboBox projectNameBox;
private java.awt.event.ActionListener isClicked;
private int i;
private javax.swing.JToggleButton[] selectedProjectToggleButton;
private String[] projectArray;
private java.lang.Boolean projectEntered;
private String projectName;
// End of variables declaration
}

