我在JFrame里加有一个JPane:
JFrame有两种大小的背景图片,
如果JFrame原来是大的,能正常地在JPane对象里绘图; 当JFrame改小了,JPane也能正常绘图; 再把JFrame变大, JPane也正常.
如果JFrame对象原来是小的,JPane也能正常绘图; 当我把JFrame改为大图片的尺寸时, JPane的绘图区域不会变大, 还是原来的大小.请问如何处理?

解决方案 »

  1.   

    如果你覆盖了JPanel的某个paint方法的话,你只需要使JPanel大小自动跟着外面的JFrame的大小来变就行了。
    这个可以使用布局管理器来完成。
      

  2.   

    这要看你的JFrame有没使用布局管理器,如果你是直接把JPane进行setBounds的话是不随窗体大小变化而变化的
      

  3.   

    这个画图一会大一会小 挺能表达的啊    drawimage的时候你的图片画多大就是多大(如果没有变量表示大小)repaint的时候画的规则是一样的  打图片也会缩放到你指定大小的矩形内的  
      

  4.   

    唉,我被这个SWing的布局管理搞得头晕啊
      

  5.   

    Frame增加窗口改变事件:private class FormListener implements ComponentListener {
        FormListener() {}
        public void componentHidden(ComponentEvent evt) {
        }    public void componentMoved(ComponentEvent evt) {
        }    public void componentResized(ComponentEvent evt) {
          if (evt.getSource() == FrameBGUTest.this) {
            frameComponentResized(evt);
          }
        }    public void componentShown(ComponentEvent evt) {
        }
      }重写JPanel的画图方法:pelBg = new JPanel (){
          protected void paintComponent(Graphics g){
            super.paintComponent(g);
            Image img = Toolkit.getDefaultToolkit().getImage("config/resource/profile.jpg");
            g.drawImage(img, 0, 0, this.getParent().getWidth(), this.getParent().getHeight(), this); 
          }
        };窗口改变大小事件,当触发时,重绘JPanel图片:private void frameComponentResized(ComponentEvent evt) {//GEN-FIRST:event_frameComponentResized
        if (evt.getID() == ComponentEvent.COMPONENT_RESIZED) {
          this.pelBg.repaint();
        }
      }
      

  6.   

    jframe用BorderLayout布局,将jpanel添加进去,就可以实现。