我从JPanel派生出一个自定义类,并重写了paintComponent方法,然后在JFrame里载入,但问题是程序在启动后并没有调用paintComponent方法,就算调用repaint方法也没用,只有在窗体的大小改变时才会调用,这是什么原因?我怎样才能在程序启动后让这个JPanel就自动重绘一下?
解决方案 »
- 关于 ConcurrentHashMap put 和 get 方法实现的疑惑
- 高手解决---- windows 服务 调用 tomcat 的问题 , 不显示tomcat 黑窗体 ~~~~~在线等!!!!!
- 关于HibernateDaoSupport继承的问题
- 请问如何编写一个按钮处理的API?
- 请问java有像msdn那样的帮助吗?
- 在JAVA程序中,如何调用 dcrf.jar
- 怎么我的JSplitPane只能向一个方向缩放,不能向相反方向调整,郁闷!!!
- jbuild在设计布局的问题
- 大牛来,,
- 在Jbuilder7中编译成功的JApplet,但是在网页中总是显示不对,是不是html文件写的有问题还是……?
- 对象多态性问题
- 从女人的角度去理解xml
draw()方法中的gc.fillRect(0, 0, this.panel.getWidth(), this.panel.getHeight())去掉,
因為第次jPanel變化時都會調draw()哦
this.addComponentListener(new ComponentAdapter() {
public void componentResized(final ComponentEvent e) {
super.componentResized(e);
}
});
别说我搞SWING这个东东还真不知道怎么去调试他
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;public class WelcomePanel extends JPanel {
private JFrame mainFrame;
private Image[] img;
public WelcomePanel(JFrame mainFrame)
{
this.mainFrame = mainFrame;
img[0] = this.load("image/title.jpg");
initUI();
}
public void initUI()
{
initMenu();
}
private void initMenu()
{
JMenuBar menuBar = this.mainFrame.getJMenuBar();
menuBar.removeAll();
JMenu mnuFile = new JMenu("退出");
menuBar.add(mnuFile);
this.mainFrame.setJMenuBar(menuBar);
}
private Image load(String filename)
{
return new ImageIcon(this.getClass().getClassLoader().getResource(filename)).getImage();
}
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(img[0], 0, 0, null);
g2d.dispose();
}
}
我这边运行的好好的,能够让Jpanel的图片画出来
public class WelcomePanel extends JPanel {
private JFrame mainFrame;
private Image img;
public WelcomePanel(JFrame mainFrame)
{
this.mainFrame = mainFrame;
img = this.load("image/title.jpg");
mainFrame.add(this);
mainFrame.validate();
mainFrame.repaint();
}
private Image load(String filename)
{
return new ImageIcon(this.getClass().getResource(filename)).getImage();
}
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(img, 0, 0, null);
g2d.dispose();
}
public static void main(String[] args) {
JFrame frm=new JFrame();
frm.setBounds(200, 200, 550, 330);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
WelcomePanel welcome=new WelcomePanel(frm);
}
}
图片你随便放一张
我的那个代码都已经实现了,什么构造方法里面的图片不懂,你想做个什么效果
不说清楚我也不知道你想干什么,马上就下班过年了说清楚帮你在走人
package UI;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;public class WelcomePanel extends JPanel {
private JFrame mainFrame;
public WelcomePanel(JFrame mainFrame)
{
this.mainFrame = mainFrame;
initUI();
}
public void initUI()
{
initMenu();
}
private void initMenu()
{
JMenuBar menuBar = this.mainFrame.getJMenuBar();
menuBar.removeAll();
JMenu mnuFile = new JMenu("退出");
menuBar.add(mnuFile);
this.mainFrame.setJMenuBar(menuBar);
}
private Image load(String filename)
{
return new ImageIcon(this.getClass().getClassLoader().getResource(filename)).getImage();
}
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(this.load("image/title.jpg"), 0, 0, null);
g2d.dispose();
}
}