Re: JTabbedPane getSelectedIndex always -1
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());
}
}