Article View: borland.public.jbuilder.java.swing
Article #13057Panel won't refresh on demand
From: Alain M. Gaudrault
Date: Thu, 01 Oct 1998 00:00
Date: Thu, 01 Oct 1998 00:00
97 lines
3800 bytes
3800 bytes
I have a simple little bean with two buttons on one side, and a label on
the other. When I click on a button, the previous label is removed, and
another is added in its place. The problem is that nothing changes when
I click the buttons unless I resize the frame. And when I uncomment the
revalidate() lines, it works, but only for one or two clicks, then I get
the same behaviour where I need to resize the frame. You'd think that
adding a component would be enough to cause it to draw itself, but it
doesn't seem like that's happening.
Am I missing something fundamental, here?
==========
import java.awt.*;
import com.sun.java.swing.*;
import java.awt.event.*;
public class NoRepaint extends JPanel {
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
GridLayout gridLayout1 = new GridLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
public NoRepaint() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void jbInit() throws Exception {
jPanel1.setLayout(gridLayout1);
this.setLayout(borderLayout1);
gridLayout1.setRows(2);
gridLayout1.setColumns(1);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("jButton2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
jLabel1.setText("jLabel1");
jLabel2.setText("jLabel2");
this.add(jPanel1, BorderLayout.WEST);
jPanel1.add(jButton1, null);
jPanel1.add(jButton2, null);
this.add(jScrollPane1, BorderLayout.CENTER);
}
void jButton1_actionPerformed(ActionEvent e) {
jScrollPane1.getViewport().removeAll();
jScrollPane1.getViewport().add(jLabel1, null);
// jLabel1.revalidate();
}
void jButton2_actionPerformed(ActionEvent e) {
jScrollPane1.getViewport().removeAll();
jScrollPane1.getViewport().add(jLabel2, null);
// jLabel2.revalidate();
}
public static void main(String[] args) {
NoRepaint nr = new NoRepaint();
JFrame frame = new JFrame("NoRepaint test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.getContentPane().add(nr, BorderLayout.CENTER);
frame.setSize(200, 200);
frame.setVisible(true);
try {
nr.wait();
}
catch(Exception e) {}
}
}
==========
--
A tantot.
http://www.gaudrault.net/
quality costs *less*
Technical Details
Message-ID:
<36132576.EF03E369@gaudrault.net>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 111d45,c7e83d79a36a0b59,start X-Google-Attributes: gid111d45,public X-Google-Thread: 101c4c,c7e83d79a36a0b59,start X-Google-Attributes: gid101c4c,public From: "Alain M. Gaudrault" <alain@gaudrault.net> Subject: Panel won't refresh on demand Date: 1998/10/01 Message-ID: <36132576.EF03E369@gaudrault.net> X-Deja-AN: 396607933 Content-Transfer-Encoding: 7bit Organization: @Home Network Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Newsgroups: borland.public.jbuilder.java.swing,borland.public.jbuilder.javabeans.writing