when i try to run this class after i search it (in the actionPerformed
) it doesn't update the JFrame
, i tried a whole bunch of different things (repaint()
, revalidate()
, etc.) but none of them work, if you could spot the problem that would help alot.
public class Scroll extends JPanel implements ActionListener {
private static final int N = 16;
private JTextArea last;
private int index;
JButton sort, Quit, search;
arraySorter array;
JFrame f;
String[]sValue;
double[]dValue;
boolean checks;
public Scroll(String[]sValues, double[]dValues, boolean check, String compare) {
sValue=sValues;
dValue=dValues;
checks=check;
this.setLayout(new GridLayout(0, 1, 3, 3));
System.out.println(compare);
if(check){
for (int i = 0; i < sValues.length; i++) {
if(sValues[i].contains(""+compare+""))this.add(create(i, sValues[i], 0, true));
}
}else{
for (int i = 0; i < dValues.length; i++) {
this.add(create(i, null, dValues[i], false));
}
}
}
private JTextArea create(int i, String j, double k, boolean check) {
if(check)last = new JTextArea(i+1+". "+j+"");
else last = new JTextArea(i+1+". "+k+"");
last.setEditable(false);
return last;
}
public void display() {
f = new JFrame("This is your sorted list!!!!");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JScrollPane(this));
f.invalidate();
f.validate();
f.repaint();
f.setSize(300, 300);
JPanel panel=new JPanel();
f.add(panel, BorderLayout.NORTH);
Quit=new JButton("Quit");//sets instruction button for frame
//adds an actionlistener
Quit.addActionListener(this);
panel.add(Quit);
search=new JButton("search");//sets instruction button for frame
//adds an actionlistener
search.addActionListener(this);
panel.add(search);
f.invalidate();
f.validate();
f.repaint();
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==Quit){
f.dispose();
array=new arraySorter();
}
if(e.getSource()==search){
f.dispose();
String compare=JOptionPane.showInputDialog("What do you want to search for?");
f.removeAll();
new Scroll(sValue, dValue, checks, compare);
display();
}
}
}