I am very new to java.
I have a class where i am creating gui and another class (main class), i am accessing the gui class. In the gui class i am creating some components and returning them.
gui class,
public class Gui {
public Component getTopPanelContent(){
Jpanel jp = new Jpanel();
JComboBox cbo1 = new JComboBox();
JComboBox cbo2 = new JComboBox();
JComboBox cbo3 = new JComboBox();
JComboBox cbo4 = new JComboBox();
JComboBox cbo5 = new JComboBox();
JButton button = new JButton();
jp.add(cbo1);
jp.add(cbo2);
jp.add(cbo3);
jp.add(cbo4);
jp.add(cbo5);
jp.add(button);
return jp;
}
}
main class,
public void addComponents(int id){
Gui g = new Gui();
Jpanel container = new Jpanel();
if(id == 1){
container.add(g.getTopPanelContent);
}
}
upto this its working fine.
In the main class there is a JTextArea, Whenever i open a file, i have to display the country list in cbo1, the file contains the list of countries that has to be displayed,
String[] countries = editArea.getContents().split("\n");
How to pass the country values to cbo1
Thanks
Well, i usually see a GUI class having the swing components as the class attributes. You made something like a 'util' class for your GUI, so you will have to hunt your JComboBox
I suggest you to go for a full featured class to represent you GUI, like:
import javax.swing.*;
public class Gui extends JPanel {
private JComboBox cbo1 = new JComboBox();
private JComboBox cbo2 = new JComboBox();
private JComboBox cbo3 = new JComboBox();
private JComboBox cbo4 = new JComboBox();
private JComboBox cbo5 = new JComboBox();
private JButton button = new JButton();
public Gui() {
add(cbo1);
add(cbo2);
add(cbo3);
add(cbo4);
add(cbo5);
add(button);
}
}
Also, add getters and setters ;-).
If you wanna keep your code your way, you can search the combobox by index:
System.out.println( jp.getComponent(0) );
Or, better, you can name your JComboBox and then search for it by name:
cbo1.setName("countryCombo");
jp.add(cbo1);
and then:
public Component findCbo1() {
for (Component comp : this.getComponents()) {
if(comp.getName() != null && comp.getName().equals("countryCombo")) {
return comp;
}
}
return null;
}
Two ways to do it....
Make the cbo1 as, static...so you will have to declare it outside the method in Class scope...
So it will be like this..
for(String s: countries){
Gui.cbo1.addItem(s);
}
Or use Singleton principle to have the Gui class as Singleton, and then use Composition to get access to the JComboBox cbo1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With