求助java高手!关于JFrame组件更新(有代码)

我的想法是点击“添加”按钮,然后将一个按钮添加到JPanel中,我调用了repaint()方法,但是没反应。可是我将窗口托大或托小,就能显示出来了。能帮我修改下吗,谢谢您了!!!

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class RepaintTest extends JFrame implements ActionListener{
private JPanel jpanel = new JPanel();
private JButton jbAdd = new JButton("添加");
private JButton jb = new JButton("按钮");

public static void main(String[] args) {
new RepaintTest();
}

public RepaintTest() {
jbAdd.setPreferredSize(new Dimension(60, 30));
jpanel.setPreferredSize(new Dimension(180,200));
jbAdd.addActionListener(this);

this.setLayout(new FlowLayout());
this.add(jbAdd);
this.add(jpanel);
this.setBounds(400, 150, 200, 300);
this.setVisible(true);
//this.setResizable(false);
}

public void actionPerformed(ActionEvent e) {

jpanel.add(jb);
repaint();

}

}

你在repaint()方法之后添加一句
this.setVisible(true);
就可以了
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-20
public void actionPerformed(ActionEvent e) {

jpanel.add(jb);
jb.setBounds(10, 10, 80, 40);
repaint();

}
因为你没给jb设置位置
第2个回答  2010-04-20
添加按钮之后先setvisible(false);
再setvisible(true);

java中怎样实现刷新Jframe,具体内容如下:
可以建立两个jlable分别放上不同的图片,将jlable放在jpanel上面,点击按钮后删除原来的jlabel添加新的jlabel JPanel panel=new JPanel();JLabel label1=new JLabel();JLabel label2=new JLabel();如果已经将label1添加在panel上,单击后可用以下代码:panel.remove(label1);panel.repaint();panel...

求java双色球模拟要有JFrame窗口的代码加设计思路
最简单的就是直接继承JFrame类,可以去查看帮助文档 JFrame类在javax.swing包下 Demo:import javax.swing.*;\/\/导入相关类 class myJFrame extends JFrame \/\/直接继承JFrame类 { public myJFrame(){ super("myJFrame");} public static void main(String[] args){ myJFrame mjf=new myJFrame...

java 无法将类JFrame中的构造器JFrame应用到给定类型 怎么解决
第一种情况: 解决办法就是查看API, 了解构造JFrame所需的参数 下图就是JFrame的4个构造器, 以及所需要的参数 第二种情况的解决办法:会报错误的代码 public class JFrame {public static void main(String[] args) {JFrame jf = new JFrame("标题栏");jf.setVisible(true);}}推荐解决办法: 修...

java 中怎样删除当前jframe中的一个jpanel 并添加一个新的jpanel
答: JFrame中, 可以通过 jframe.remove(组件) 方法删除指定的组件 ,也可以通过jframe.add(组件) 方法来添加新的组件 . 值得注意的是,添加和删除组件之后,都需要更新窗口 , 否则可能显示异常 效果图 jp1 里输入用户名, 不能为空 jp1里输入了用户名 jp1被删除,然后显示jp2 参考代码 import javax...

Java Swing关于界面刷新的问题!!
代码如下:class Demo extend Jframe{ private Jpanel panel=null;\/\/这个是你要更改的面板 private Jbutton btnA=null;private Jbutton btnB=null;public Demo(){ this.setSize(800,600)panel=new Jpane();panel.setSize(100,100);btnA=new Jbutton("宽度加300")btnA.addActionListener(new ...

Java关于JPanel的问题
问题主要出在:你没有将JPanel添加到JFrame容器中去。可将代码进行简单修改,如下:import java.awt.Container;import javax.swing.*;public class JPanelDemo1 { public static void main(final String []args){ JFrame frame=new JFrame("JFrame程序");frame.setSize(600,450);frame.setDefault...

会java的过来看一眼,下面是我的源代码,没有错误,可就是无法显示组件,请...
frame 是java 里的一个控件 而this 是本类 而jFrame是容器里的一个组件 component---container---Jframe

我用JAVA代码给JFrame窗体加了张图片 可是无法在图片里某个地方加上文 ...
改变文本框位置,你可以使用setBounds方法 public void setBounds(int x,int y,int width,int height)x,y是相对于容器的左边,width和height是该文本框的宽度和高度 这是所有组件都具有的一个方法

急!求教Java高手!以下是我的Java代码,我在注释中写明了我的想法,和问题...
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;class jfr extends JFrame { String getpath;String gettype;String getname;JTextField jf1 = new JTextField();\/\/ 接收用户输入的文件夹路径 JTextField jf2 = new JTextField();\/\/ 接收用户输入的文件夹下...

java的JFrame框架覆盖问题!
一般我们在往JFrame中添加组件时,都加在了内容面板中,这个面板可以通过JFrame的成员方法getContentPane()取出来,所以如果设置JFrame的背景颜色,仍然会被内容面板盖住,不如设置内容面板的背景颜色 当时如果框架中还加有其他面板,内容面板的颜色也会被其他面板盖住,要注意一下面板的布局情况 ...

相似回答