| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1129 人关注过本帖
标题:程序运行时添加控件时的重画问题
取消只看楼主 加入收藏
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
 问题点数:0 回复次数:5 
程序运行时添加控件时的重画问题

/*
* @(#) AddPanel.java
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class AddPanel extends JFrame implements ActionListener {
private JPanel panel1;
private JPanel panel2;
private JButton button;

public AddPanel() {
panel1 = new JPanel();
panel1.setBackground(Color.gray);
Panel1Handler handler = new Panel1Handler();
panel1.addContainerListener(handler);
panel1.addComponentListener(handler);
add(panel1, BorderLayout.CENTER);

panel2 = new JPanel();
panel2.setBackground(Color.white);
panel2.setSize(200, 100);

button = new JButton("Add Panel");
button.addActionListener(this);
add(button, BorderLayout.SOUTH);

setSize(400, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent event) {
panel1.add(panel2);
}

class Panel1Handler implements ContainerListener, ComponentListener {
public void componentAdded(ContainerEvent event) {
System.out.println("componentAdded");
panel1.repaint();
}

public void componentRemoved(ContainerEvent event) {
System.out.println("componentRemoved");
}

public void componentHidden(ComponentEvent event) {
System.out.println("componentHidden");
}

public void componentMoved(ComponentEvent event) {
System.out.println("componentMoved");
}

public void componentResized(ComponentEvent event) {
System.out.println("componentResized");
}

public void componentShown(ComponentEvent event) {
System.out.println("componentShown");
}
}

public static void main(String[] args) {
AddPanel application = new AddPanel();
}
}

注意:用JDK5.0版本编译执行。

程序运行后,单击 Add Panel 按钮后,可以正常添加并显示Panel2,但是当改变窗口大小后,Panel2就不能正常显示了,componentResized()方法里应该怎么添加什么代码?怎么写? 程序其它地方是不是也有错误?

搜索更多相关主题的帖子: 控件 运行 
2006-12-17 13:42
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
开始时,我也是在componentResized()方法中调用panel1.repaint()方法,但是不起作用。

我在大家热情的帮助下进步,谢谢你们!
2006-12-17 15:19
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
是不是要用其它的什么Method?

我在大家热情的帮助下进步,谢谢你们!
2006-12-17 15:20
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

将componentResized()方法里的代码改成下面的也不行
public void componentResized(ComponentEvent event) {
Graphics g = panel1.getGraphics();
panel1.update(g);
}


我在大家热情的帮助下进步,谢谢你们!
2006-12-17 15:24
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

两个Panel的颜色是不同的,Panel1是灰色的,Panel2是白色的。

我的本意是这样的:
当单击 Add Panel 按钮后,改变窗口的大小不会影响到Panel2(就是那个白色区域(0,0,200,100))还是正常显示。

存在的问题:
但是现在当添加Panel2后,改变一下窗口的大小,然后Panel2就变成Panel1上方中央一个很小的白色小块了。


我在大家热情的帮助下进步,谢谢你们!
2006-12-17 16:05
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
我的意思就是这样的,封歌真是厉害,小弟以后好好向封哥学习!

我在大家热情的帮助下进步,谢谢你们!
2006-12-17 17:10
快速回复:程序运行时添加控件时的重画问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040983 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved