public static void main(String[] args) throws Exception { final JFrame jf = new JFrame();
final JButton jb3 = new JButton("dd3"); final JPanel jj=new JPanel();
final JPanel j=new JPanel(){
public void paint(Graphics g) {
try {
Graphics2D gd = (Graphics2D) g;
Line2D l=new Line2D.Float(-0.5f,-0.5f,80.0f,30.0f);
gd.draw(l);
} catch (Exception ex) {
}
}
}; Image iiii = javax.imageio.ImageIO.read(new File("jt.gif"));
final NewJPanel jdf=new NewJPanel(iiii);
j.setBackground(Color.RED); final javax.swing.JButton jButton1 = new javax.swing.JButton("不正常添加"); jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jf.invalidate();
jj.add(jb3, BorderLayout.CENTER);
//jf.add(jb3, BorderLayout.WEST);
jf.validate();
System.out.println("sdfsd");
}
}); final JButton jb2 = new JButton("添加正常");
jb2.setIcon(new javax.swing.ImageIcon("t.png"));
jb2.setOpaque(false);
jb2.setBorder(null);
jb2.setBorderPainted(false);
jb2.setFocusPainted(false);
jb2.setContentAreaFilled(false);
jb2.setRolloverIcon(new javax.swing.ImageIcon("m.png")); jb2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jf.invalidate();
jf.add(jb3, BorderLayout.EAST);
jf.validate();
System.out.println("sdfsd");
} }); jf.add(jButton1, BorderLayout.NORTH);
jf.add(jb2, BorderLayout.SOUTH);
jj.setOpaque(false);
jj.setBorder(null);
//jj.setBorderPainted(false);
//jj.setFocusPainted(false);
//jj.setContentAreaFilled(false);
j.add(jj);
jf.add(j,BorderLayout.CENTER);
jf.setVisible(true);
jf.setSize(800, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
final JButton jb3 = new JButton("dd3"); final JPanel jj=new JPanel();
final JPanel j=new JPanel(){
public void paint(Graphics g) {
try {
Graphics2D gd = (Graphics2D) g;
Line2D l=new Line2D.Float(-0.5f,-0.5f,80.0f,30.0f);
gd.draw(l);
} catch (Exception ex) {
}
}
}; Image iiii = javax.imageio.ImageIO.read(new File("jt.gif"));
final NewJPanel jdf=new NewJPanel(iiii);
j.setBackground(Color.RED); final javax.swing.JButton jButton1 = new javax.swing.JButton("不正常添加"); jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jf.invalidate();
jj.add(jb3, BorderLayout.CENTER);
//jf.add(jb3, BorderLayout.WEST);
jf.validate();
System.out.println("sdfsd");
}
}); final JButton jb2 = new JButton("添加正常");
jb2.setIcon(new javax.swing.ImageIcon("t.png"));
jb2.setOpaque(false);
jb2.setBorder(null);
jb2.setBorderPainted(false);
jb2.setFocusPainted(false);
jb2.setContentAreaFilled(false);
jb2.setRolloverIcon(new javax.swing.ImageIcon("m.png")); jb2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jf.invalidate();
jf.add(jb3, BorderLayout.EAST);
jf.validate();
System.out.println("sdfsd");
} }); jf.add(jButton1, BorderLayout.NORTH);
jf.add(jb2, BorderLayout.SOUTH);
jj.setOpaque(false);
jj.setBorder(null);
//jj.setBorderPainted(false);
//jj.setFocusPainted(false);
//jj.setContentAreaFilled(false);
j.add(jj);
jf.add(j,BorderLayout.CENTER);
jf.setVisible(true);
jf.setSize(800, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
解决方案 »
- 笔试题求解!!
- 关于现在企业使用的操作系统!
- java 两个list之间相互,怎么做呢
- Which Java collection class can be used to maintain the entries in the order in which they were last accessed?中文什么意思?
- JTable 问题 求助
- 请教java问题
- 如何实现java 程序在后台运行,象qq一样运行在任务栏?
- 寻找中文版类库!!及说明!!多谢帮忙,定当高分报答!!
- getActionCommand()是什么东东?
- 如何在JEditPanel中实现语法加亮,或者有什么其他的办法,哪里有这方面的教材?
- awt重量级组件的peer对象是什么时候创建的?
- linkedBlockingDeque 移动指定元素如何做
这个按钮如果设置了imageIcon,并且设置背景透明的时候,按钮怎么也显示不出来。
这个按钮如果设置了imageIcon,并且设置背景透明的时候,按钮怎么也显示不出来。这段话能看明白么?
而Swing的绘制也因此分为 异步重绘请求 和 同步绘制请求
异步绘制请求
1、 Component.repaint();
2、 Component.repaint(int x ,int y ,int width ,int height);
同步绘制请求
1、JComponent.paintImmediately(int x ,int y ,int w ,int h);
2、Component.paint(Graphics);
有时用repaint()无法更新界面时,就是由于异步绘制请求不能马上被执行
所以这时就可以考虑使用同步绘制请求