java Swing 中 面板刷新的问题。。求指教 。 高手在哪里啊。。。

 javaswing中repaint()刷新面板的问题 求指教。。。代码如下:运行后点击按钮1,面板没刷新,需要缩放面板才能看到新的面板。我用计时器或...  java swing 中 repaint()刷新面板的问题  求指教。。。代码如下:运行后点击按钮1,面板没刷新,需要缩放面板才能看到新的面板。 我用计时器或则线程来调用repaint(),好像都没用,到底是怎么回事啊。。。import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Test extends JFrame implements ActionListener { MyThread thread = new MyThread(); JFrame frame; JPanel panel; Container containe; JPanel panel2; javax.swing.Timer time = new Timer(80,this); Test() {  time.start();  frame = new JFrame();  containe = frame.getContentPane();  panel = new JPanel();  panel2 = new JPanel();  JButton button1 = new JButton("按钮1");  JButton button2 = new JButton("按钮2");  panel.setBackground(Color.BLACK);  panel2.setBackground(Color.RED);  button1.addActionListener(new ActionListener() {   public void actionPerformed(ActionEvent e) {    containe.removeAll();    containe.add(panel2);   }  });  button2.addActionListener(new ActionListener() {   public void actionPerformed(ActionEvent e) {    containe.removeAll();    containe.add(panel);   }  });  panel.add(button1);  panel2.add(button2);  containe.add(panel);  frame.setSize(800, 600);  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  thread.start();  frame.setVisible(true); } public static void main(String[] args) {  new Test(); } class MyThread extends Thread {  public void run() {   containe.repaint();  } } @Override public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  repaint(); }} 展开
 我来答
chengpingjike
2011-12-24
知道答主
回答量:21
采纳率:0%
帮助的人:11.5万
展开全部
楼主好好看看 达到你目的了 哈哈哈 不需要那么多线程
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Test extends JFrame implements ActionListener {
JFrame frame;
JPanel panel;
JPanel containe;
JPanel panel2;
JButton button1 = null;
JButton button2 = null;
javax.swing.Timer time = new Timer(80, this);

Test() {
time.start();
frame = new JFrame();
containe = (JPanel) frame.getContentPane();
panel = new JPanel();
panel2 = new JPanel();
button1 = new JButton("按钮1");
button2 = new JButton("按钮2");

button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel2.setBackground(Color.RED);
panel2.add(button2);
containe.removeAll();
containe.add(panel2);
containe.updateUI();
System.out.println("red");
}
});
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
panel.setBackground(Color.BLACK);
panel.add(button1);
containe.removeAll();
containe.add(panel);
containe.updateUI();//更改组件UI外观即可
System.out.println("balck");
}
});
panel.setBackground(Color.BLACK);
panel2.setBackground(Color.RED);
panel.add(button1);
panel2.add(button2);
containe.add(panel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

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

public void actionPerformed(ActionEvent e) {

}
}
xidianheyanjun
2011-12-24 · TA获得超过296个赞
知道小有建树答主
回答量:598
采纳率:0%
帮助的人:394万
展开全部
你好。
一般只是在最开始显示的时候才会有不出现的情况,需要进行拉伸等操作才会显示出来,之后应该是不会不显示的。
而且面板内的内容改变时,容器类组件需要显示刷新才会显示新面板,如果是控件类组件是不需要显示刷新就会即时改变的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
an1241102116
2011-12-29
知道答主
回答量:11
采纳率:100%
帮助的人:1.5万
展开全部
哎呀,你的代码太乱了,我也没来信看啊 ,但是我知道可以用线程来刷新,就是我给你个简单的吧
class B implements Runnable {
public void run(){
while(true){
Date da = new Date();
System.out.println(da.toLocaleString());
try{
Thread.sleep(1000);
}catch(Exception e){}
}
}
}
public calss A {
public static void main(String[] args){
B b = new B();
Thread th = new Thread(b);
th.start();
}
}
每秒重新调用一次而已,不知道是不是你想要的刷新

参考资料: a

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
神话太惨裤
2011-12-25
知道答主
回答量:32
采纳率:0%
帮助的人:8.2万
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式