2012-01-07 8 views
1

私のFlowLayoutは画像を非常に小さくペイントします。Java FlowLayoutが小さな画像をペイントします

私の間違いは何ですか?

私の計画遅い、それは次のようになりますこと:colorSeperationsまたはヒストグラムの1行を表示し、内側フローレイアウト上の

enter image description here

だから今IAM作業。

public Window(String pfad, Image bild) { 
     this.pfad = pfad; 
     this.bild = bild; 

     int[] actualScalation1 = new int[2]; 
     Scaler scalerImg1 = new Scaler(bild); 
     actualScalation1 = scalerImg1.getActualScalation(); 

     // int RGB-int Array 
     int [][] rgbColorsForPicture; 

     // Gib mir das Bild als BufferedImage 
     BufferedImage pictureForColorSeperation = null; 
     try { 
      pictureForColorSeperation = BufferImage.drawthePicture(pfad); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     // Gib mir das Bild als RGB-int Array 
     rgbColorsForPicture = ImageToolK.readRGBvalues(pictureForColorSeperation); 
     // Erstelle den roten Farbauszug 
     ColorSeperation farbauszugRot = new ColorSeperation(rgbColorsForPicture, 0, 0, 0, actualScalation1[0], actualScalation1[1], 0.5); 
     farbauszugRot.createColorSeperation(); 

     ColorSeperation farbauszugGruen = new ColorSeperation(rgbColorsForPicture, 0, 0, 1, actualScalation1[0], actualScalation1[1], 0.5); 
     farbauszugGruen.createColorSeperation(); 

     ColorSeperation farbauszugBlau = new ColorSeperation(rgbColorsForPicture, 0, 0, 2, actualScalation1[0], actualScalation1[1], 0.5); 
     farbauszugBlau.createColorSeperation(); 

     Histogram histogramRot = new Histogram(rgbColorsForPicture, 0, 0, 0, bild.getHeight(null), bild.getWidth(null), 1, 1); 
     histogramRot.createHistogram(bild.getHeight(null), bild.getWidth(null)); 

     PicturePanel panelbild1 = new PicturePanel(bild, actualScalation1[0], actualScalation1[1]); 
     PicturePanel panelbild2 = new PicturePanel(bild, actualScalation1[0], actualScalation1[1]); 
     PicturePanel panelbild3 = new PicturePanel(bild, actualScalation1[0], actualScalation1[1]); 


     /** 
      * 
      * LAYOUTEN 
      */ 

     Panel panel1 = new Panel(); 
     Panel glDiagramsAndSeperations = new Panel(); 

     panel1.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); 
//  ((FlowLayout) panel1.getLayout()).setAlignment(FlowLayout.LEFT); 
//  GridBagLayout gbl = new GridBagLayout(); 
     GridLayout mainWindow = new GridLayout(1, 0, 0, 0); 
     glDiagramsAndSeperations.setLayout(new GridLayout(0, 1, 0, 0)); 
// 
//  GridBagConstraints gbc = new GridBagConstraints(); 
     setLayout(mainWindow); // GridBagLayout setzen 

//  glDiagramsAndSeperations.add(panel1); 
//  
     panel1.add(farbauszugRot); 
     panel1.add(farbauszugGruen); 
     panel1.add(farbauszugBlau); 


// 
//  panel1.add(panelbild1); 
//  panel1.add(panelbild2); 

     add(panel1); 


     this.setBackground(new Color(232, 232, 232)); 

     pack(); 
     setVisible(true); 
    } 
+1

'ColorSeperation'と 'panel1'のそれぞれの' getPreferredSize() 'を印刷してみてください。たぶん彼らは小さくてほしいかもしれません。 –

+0

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

ラッセルの提案を拡張して、カスタムパネルのgetPreferredSize()メソッドをオーバーライドしてイメージのサイズを返しましたか? – camickr

答えて

1

は、最大resiziableする必要があり、その後JLabelImageIconとしてImageを置く最大のトピックは、約FlowLayoutは、コードを使用すると、その可能性、ここに掲載GridLayoutの使用法を示したことは切り取らあるので、Icon'sgetWidhtgetHeight

あなたが受け入れるならば、LayoutManagerは、GridのすべてObjectは画面上に同じBoundsを持っています

+0

私は傾けることができません、私はAWTだけを使用しなければなりません。他のチャンスはありませんか? – Furtano

+0

あなたの人に攻撃をしないようにしてください。なぜ、2002年から最後のミリオンから来たAPIを使用していますか?Swing、Swingの代わりにAWTを使用する重要な理由が必要です。実装はOpenGL – mKorbel

+0

ですが、そのタスクと私はそれのためのプログラム(パネルのペイントメソッド)を設計しました、私はこのプロジェクトで今スイングに変更することはできません。だから、AWTでこれを行う方法はありますか? – Furtano

関連する問題