Ok, finally I have made the SSCCE, you can try it now and tell me what
is the problem...
What I am doing in this piece of code is that I am displaying initially
a button with text "start", on pressing the reload button the text
should alternately change from "dony" and "pony", try maximizing the
applet to see the problem.
Can anyone tell me now what to do.
I am in desperate need of help!!
TIA
Rohit
/*Launch.java*/
package javaapplication1;
public class Launch {
public static void main(String args[]){
Viewer view = new Viewer("start");
view.displayFrame();
view.displayResults();
}
}
/*Viewer.java*/
package javaapplication1;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Button;
import java.awt.Panel;
import java.awt.Frame;
class Viewer implements ActionListener {
private String str;
private Button reload;
private JFrame mainFrame;
private Jbit jc;
boolean flag = true;
public Viewer (String str) {
this.str = str;
}
public void displayFrame() {
mainFrame = new JFrame("MODEL VIEWER");
mainFrame.setLocation(200, 100);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void updateModel(String str) {
this.str = str;
}
public void displayResults () {
jc = new Jbit(str);
mainFrame.getContentPane().setLayout(new BorderLayout());
mainFrame.getContentPane().add("Center", jc);
reload = new Button("Reload");
reload.addActionListener(this);
Panel p = new Panel();
p.add(reload);
mainFrame.getContentPane().add("South", p);
mainFrame.pack();
mainFrame.setSize(600,600);
mainFrame.setVisible(true);
//Default view
}
public void refreshResults(String str) {
jc = new Jbit(str);
mainFrame.setSize(mainFrame.getSize().width,
mainFrame.getSize().height);
mainFrame.getContentPane().add("Center", jc);
mainFrame.invalidate();
mainFrame.validate();
mainFrame.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if (cmd.equals("Reload")) {
if(flag){
refreshResults("pony");
flag = false;
}
else {
refreshResults("dony");
flag = true;
}
jc.validate();
}
}
}
/*Jbit.java*/
package javaapplication1;
import java.applet.Applet;
import java.awt.Button;
import java.awt.BorderLayout;
public class Jbit extends Applet {
private String str;
private Button button1;
//Applet started with a model
public Jbit (String str) {
this.str = str;
init();
}
public void init() {
setLayout(new BorderLayout());
button1 = new Button(str);
add(button1);
}
public void start () {
repaint();
}
public String getString () {
return str;
}
}
Oliver Wong - 31 May 2006 21:41 GMT
> Ok, finally I have made the SSCCE, you can try it now and tell me what
> is the problem...
[quoted text clipped - 4 lines]
> applet to see the problem.
> Can anyone tell me now what to do.
[code snipped]
There's a lot of problems with this code.
* First of all, you have to decide whether you are trying to write an
application, or an applet.
* Second, you should decide whether you want to use Swing or AWT.
* You should also collect all your GUI creation code into one method,
instead of having half of it in displayFrame() and the other half in
displayResults(). This GUI construction code shouldn't be made publicly
accessible. Instead, call it within the constructor of the class managing
the window.
* The add(String, Component) method you're using has been obsolete since
Java 1.1. We're now at Java 1.5, with 1.6 coming out soon. Use the
add(Component, Object) method instead.
* You say you want to change the text of the button, but your
refreshResults() method doesn't ever even refer to the button.
- Oliver