Somehow I can only get the SelectedIndex inside main method. I keep
getting "-1" when I try to get it from other method. I am not sure if
it's because I create the tabs inside a for loop in the method. Please
advise. Thanks
class {
declare jpanel
declare jtabbedpane
main{
for loop {
create jtabbedpane (name[], panel[]);
}
addlistener to submitButton;
System.out.println(jtabbedpane.getSelectedIndex()); //
this works
}
submitButtonActionListener {
System.out.println(jtabbedpane.getSelectedIndex()); //this
always return -1
}
}
>..Please advise.
I advise you to post an SSCCE, rather than pseudo-code.
<http://www.physci.org/codes/sscce.html>
>..Thanks
No worries.

Signature
Andrew Thompson
http://www.physci.org/
> Somehow I can only get the SelectedIndex inside main method. I keep
> getting "-1" when I try to get it from other method. I am not sure if
[quoted text clipped - 26 lines]
>
> }
You need to post real code. The problem is in the code which you haven't shown
us. The best we can do is guess, which may well be a waste of both your and our
time.
However, given that you are creating jtabbedpane in a loop it's a fair bet that
there is more than one JTabbedPane. Which one of them do you think jtabbedpane
refers to in the action listener?

Signature
Nigel Wade, System Administrator, Space Plasma Physics Group,
University of Leicester, Leicester, LE1 7RH, UK
E-mail : nmw@ion.le.ac.uk
Phone : +44 (0)116 2523548, Fax : +44 (0)116 2523555
Lew - 18 Dec 2007 15:30 GMT
tomzhi wrote:
>> Somehow I can only get the SelectedIndex inside main method. I keep
>> getting "-1" when I try to get it from other method. I am not sure if
[quoted text clipped - 23 lines]
>> }
>> }
> You need to post real code. The problem is in the code which you haven't shown
> us.
Given that they haven't shown us any code at all, it's a fair bet that you're
right, Nigel.

Signature
Lew
tomzhi - 18 Dec 2007 15:36 GMT
This is a unit converter I am trying to create. Loadtable is class
that loads the data to create the dropdown list on different tab.
I used for loop to create arrays of panels, which becomes tabs. Also
arrays of buttons, dropdown list.
Now, I need to use submit[i] button to call a function to calculate
the conversion factor. However, I can't define which tab the user has
currently selected. I can do it only within the main method, but not
outside. It would become -1 outside. Please help.
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.*;
public class Main {
JTabbedPane tab = new JTabbedPane();
int i, index;
JComboBox[] box = new JComboBox [10];
JComboBox[] box_2 = new JComboBox [10];
JTextField[] text = new JTextField[10];
JTextField[] text_2 = new JTextField[10];
JPanel [] panel = new JPanel[10];
JButton[] exit = new JButton[10];
JButton[] submit = new JButton[10];
public Main() {
}
public static void main(String[] args) throws
FileNotFoundException, IOException {
JTabbedPane tab = new JTabbedPane();
int i;
JComboBox[] box = new JComboBox [10];
JComboBox[] box_2 = new JComboBox [10];
JTextField[] text = new JTextField[10];
JTextField[] text_2 = new JTextField[10];
JPanel [] panel = new JPanel[10];
JButton[] exit = new JButton[10];
JButton[] submit = new JButton[10];
String [] name = {"Distance",
"Area","Temperature","Speed","Volume",
"Density","Force","Energy","Frequency","Astronomical"};
loadtable x =new loadtable();
x.load();
for (i=0;i<10;i++) {
panel[i]=new JPanel();
box[i]= new JComboBox(x.getdata(name[i]));
box_2[i]=new JComboBox(x.getdata(name[i]));
text[i]= new JTextField();
text_2[i]= new JTextField();
exit[i]=new JButton("Exit");
submit[i]= new JButton("Submit");
text[i].setColumns(10);
text_2[i].setColumns(10);
panel[i].add(text[i]);
panel[i].add(box[i]);
panel[i].add(text_2[i]);
panel[i].add(box_2[i]);
panel[i].add(submit[i],BorderLayout.PAGE_END);
panel[i].add(exit[i],BorderLayout.PAGE_END);
tab.add(name[i],panel[i]);
}
JFrame frame = new JFrame("Unit Converter");
frame.add(tab);
frame.setSize(750,200);
frame.setLocation(200,200);
frame.setVisible(true);
for (i=0;i<10;i++) {
exit[i].addActionListener(new
java.awt.event.ActionListener () {
public void actionPerformed(java.awt.event.ActionEvent
evt){
exitActionPerformed(evt);
}
});
}
for (i=0;i<10;i++) {
exit[i].addActionListener(new
java.awt.event.ActionListener () {
public void actionPerformed(java.awt.event.ActionEvent
evt){
exitActionPerformed(evt);
}
});
}
for (i=0;i<10;i++) {
submit[i].addActionListener(new
java.awt.event.ActionListener () {
public void actionPerformed(java.awt.event.ActionEvent
evt){
submitActionPerformed(evt);
}
});
}
}
private static void
exitActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private static void
submitActionPerformed(java.awt.event.ActionEvent evt) {
Main x = new Main();
System.out.println(x.tab.getSelectedIndex());
}
}