重绘组件
来源:互联网 发布:angular js new array 编辑:程序博客网 时间:2024/05/20 06:22
因为在网上找了好久一直没找到一些具体的例子,所以自己做完后,总结了一下
就这两种了
重绘背景:
思路:1.JPanel重写paintComponent()方法;
2.在paintComponent()方法中通过不同的值可以改变要画的东西;
3.setVarious()一个改变paintComponent()值--(我的是通过boolean)
4.在监听中改变这个值setVarious()不同的值;
5.注意:setVarious()中一定要调用repaint()它自动调用paintComponent()
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.JOptionPane;
import javax.swing.JPanel;
public class Test extends JFrame{
private JPanel1 jp;
public Test(){
init();
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void init(){
jp=new JPanel1();
final JButton jb=new JButton("确定");
jp.add(jb);
this.getContentPane().add(jp);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.setShow(true);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
}
}
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class JPanel1 extends JPanel{
private boolean show=false;
public void setShow(boolean show){
this.show=show;
repaint(); //调用paintComponent();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
if(show==true){
ImageIcon image=new ImageIcon("图片地址");
g.drawImage(image.getImage(),0,0,getWidth(),getHeight(),null);
}else{
ImageIcon image=new ImageIcon("图片地址");
g.drawImage(image.getImage(),0,0,getWidth(),getHeight(),null);
}
}
}
2.面板重绘组件:
思路: 1.先把要添加的组件全部添加进去(如果组件太多建议继承JPanel),记得还要设置setVisible(false)不可见;
2.在paintComponent()中只要写去要显示的组件setVisible(true);就好了。
3.再将要添加的组件写在一个方法中,也只要setVisible(true);
4.最后一定要先一个方法将所有组件归false的方法,且每次调用要添加的方法时都要先调用至false方法;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Test extends JFrame{
private JPanel jp;
private JFrame j;
private JButton jb;
private JButton jb1;
private boolean show =false;
public Test(){
init();
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(j.EXIT_ON_CLOSE);
setVisible(true);
}
public void init(){
jp= new JPanel();
jb=new JButton("确定");
jp.add(jb);
this.getContentPane().add(jp);
jb1=new JButton("Test");
jb1.setVisible(false);
jp.add(jb1);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
paint_false();
paint_0();
}
});
}
public void paint_0(){
jb1.setVisible(true);
}
public void paint_false(){
jb.setVisible(false);
jb1.setVisible(false);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
}
就这两种了
重绘背景:
思路:1.JPanel重写paintComponent()方法;
2.在paintComponent()方法中通过不同的值可以改变要画的东西;
3.setVarious()一个改变paintComponent()值--(我的是通过boolean)
4.在监听中改变这个值setVarious()不同的值;
5.注意:setVarious()中一定要调用repaint()它自动调用paintComponent()
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.JOptionPane;
import javax.swing.JPanel;
public class Test extends JFrame{
private JPanel1 jp;
public Test(){
init();
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void init(){
jp=new JPanel1();
final JButton jb=new JButton("确定");
jp.add(jb);
this.getContentPane().add(jp);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jp.setShow(true);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
}
}
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class JPanel1 extends JPanel{
private boolean show=false;
public void setShow(boolean show){
this.show=show;
repaint(); //调用paintComponent();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
if(show==true){
ImageIcon image=new ImageIcon("图片地址");
g.drawImage(image.getImage(),0,0,getWidth(),getHeight(),null);
}else{
ImageIcon image=new ImageIcon("图片地址");
g.drawImage(image.getImage(),0,0,getWidth(),getHeight(),null);
}
}
}
2.面板重绘组件:
思路: 1.先把要添加的组件全部添加进去(如果组件太多建议继承JPanel),记得还要设置setVisible(false)不可见;
2.在paintComponent()中只要写去要显示的组件setVisible(true);就好了。
3.再将要添加的组件写在一个方法中,也只要setVisible(true);
4.最后一定要先一个方法将所有组件归false的方法,且每次调用要添加的方法时都要先调用至false方法;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Test extends JFrame{
private JPanel jp;
private JFrame j;
private JButton jb;
private JButton jb1;
private boolean show =false;
public Test(){
init();
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(j.EXIT_ON_CLOSE);
setVisible(true);
}
public void init(){
jp= new JPanel();
jb=new JButton("确定");
jp.add(jb);
this.getContentPane().add(jp);
jb1=new JButton("Test");
jb1.setVisible(false);
jp.add(jb1);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
paint_false();
paint_0();
}
});
}
public void paint_0(){
jb1.setVisible(true);
}
public void paint_false(){
jb.setVisible(false);
jb1.setVisible(false);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
}
}
3.添加组件 :直接在监听中添加,添加以后一定要JFrame.validate();//验证这个窗口中的组件,也就是刷新
4.添加组件:在paint(Graphics g);中用show变量控制绘制不同的组件; 1.1一定要this.paintImmediately(0,0,1024,768);//这里里面的值可以设大一点没事;1.2还要validate()因为你是添加组件,重绘这是在JPanel上,而JFrame不知道;
为什么没用repaint(),update()因为这两个方法,调用延时长,所以按下去的效果不会马上看出来,所以不推荐;
public void paintComponent(Graphics g){
super.paintComponent(g);
System.out.println("------------------------");
System.out.println(show);
if(show==true){
System.out.println(1);
// this.remove(jb2);
this.add(jb4);
}
if(show==false){
System.out.println(2);
this.add(jb2);
}
- 重绘组件
- Extjs组件重绘
- Java.GUI图形操作.组件重绘
- qt4.7 组件重绘文字
- JAVA——组件重绘
- CF 组件重启
- Swing组件重定位
- Swing组件响应事件与自身重绘
- IIS相关组件重注册
- 12.5.1 Graphics类与图形绘制和组件重绘的处理
- 【Button美化】五分钟带你入门GDI+重绘组件
- 【Android】利用自定义View的重绘实现拖动移动,获取组件的尺寸
- 【REACT NATIVE 系列教程之六】重写SHOULDCOMPONENTUPDATE指定组件是否进行重绘
- 页面重构中的组件制作要点
- Mvc分页组件MvcSimplePager代码重构
- ES6语法重构的react组件
- 使用ES6语法重构React组件
- 把控制台重定向到GUI组件上
- iReport中序号自增的实现
- VS2008 SP1 安装卡在 VS90sp1-KB945140-X86-CHS的解决方法
- ubuntu下假设ftp服务器的方法
- stm32f407开发板的时钟配置问题
- Essential Job Skill for Life
- 重绘组件
- 《程序员修炼之道》 读书笔记
- 主要网站地址
- EJB规范的三种Bean
- C语言复习之文件的操作
- JS按键代码的处理
- catalan数及其应用
- EL表达式
- 单句柄数据,单IO数据