2016-03-31 36 views
0

Bir GridLayout(2,2) kullanarak bir JPanel kullanarak 4 görüntüyü görüntülemek için en uygun yol ne olurdu?JPanel'de GridLayout kullanarak görüntüler nasıl görüntülenir?

Sorun çözüldü !! Ben böyle yaptım. Etkili olmayabilir, ancak okunması kolay ve işe yarıyor :) Bunun nasıl geliştirilebileceğini bana bildirmekten çekinmeyin! Her zaman kodlarımı geliştirmenin yollarını arıyorum!

//  Create panel and set layout 
     pFlag= new JPanel(); 
     pFlag.setLayout(new GridLayout(2,2,10,10)); 

//  Get image  
     flag1Img = getImage(getCodeBase(), "croatia.png"); 
     flag2Img = getImage(getCodeBase(), "eng.png"); 
     flag3Img = getImage(getCodeBase(), "romania.png"); 
     flag4Img = getImage(getCodeBase(), "spain.png");   

//  Set as icon  
     flag1Icon = new ImageIcon(flag1Img); 
     flag2Icon = new ImageIcon(flag2Img); 
     flag3Icon = new ImageIcon(flag3Img); 
     flag4Icon = new ImageIcon(flag4Img); 

//  Create JLabel  
     flag1Label = new JLabel(); 
     flag2Label = new JLabel(); 
     flag3Label = new JLabel(); 
     flag4Label = new JLabel(); 

//  Set JLabel alignment   
     flag1Label.setHorizontalAlignment(JLabel.CENTER); 
     flag1Label.setVerticalAlignment(JLabel.CENTER); 
     flag2Label.setHorizontalAlignment(JLabel.CENTER); 
     flag2Label.setVerticalAlignment(JLabel.CENTER); 
     flag3Label.setHorizontalAlignment(JLabel.CENTER); 
     flag3Label.setVerticalAlignment(JLabel.CENTER); 
     flag4Label.setHorizontalAlignment(JLabel.CENTER); 
     flag4Label.setVerticalAlignment(JLabel.CENTER);  

//  Set JLabels as icons 
     flag1Label.setIcon(flag1Icon); 
     flag2Label.setIcon(flag2Icon); 
     flag3Label.setIcon(flag3Icon); 
     flag4Label.setIcon(flag4Icon); 

//  Assign icons to images 
     pFlag.add(flag1Label); 
     pFlag.add(flag2Label); 
     pFlag.add(flag3Label); 
     pFlag.add(flag4Label); 

     con.add(pFlag); 
+0

* en uygun * çoğaltmak ... [Java salıncak - birden fazla resim görüntüleme dinamik Jpanel on] –

+2

Olası kopyalar (http://stackoverflow.com/questions/8500746/java-swing- –

+0

* ".. yerel bir klasörden dinamik olarak görüntülenen çoklu sayfa görüntüleri" Sunucu veya istemci makine? Her iki şekilde de bir dizin, bir 'klasör' değil, tamamen bir GUI konsepti olduğunu unutmayın. Hangi kısımda sorun yaşıyorsun? Ne denedin? –

cevap

1

Sadece resimlerinizi JLabel s yazın. Andrew Thompson olarak güncellenen

JFrame frame = new JFrame("Test"); 
JPanel panel = new JPanel(new GridLayout(2, 2)); 
frame.setContentPane(panel); 

frame.setVisible(true); 
JLabel label1 = new JLabel(); 
panel.add(label1); 
JLabel label2 = new JLabel(); 
panel.add(label2); 
JLabel label3 = new JLabel(); 
panel.add(label3); 
JLabel label4 = new JLabel(); 
panel.add(label4); 

try { 
    BufferedImage myPicture = ImageIO.read(new File("test.jpg")); 

    label1.setIcon(new ImageIcon(myPicture)); 
    label2.setIcon(new ImageIcon(myPicture)); 
    label3.setIcon(new ImageIcon(myPicture)); 
    label4.setIcon(new ImageIcon(myPicture)); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

frame.pack(); 
frame.setMinimumSize(frame.getPreferredSize()); 

GÜNCELLEME Bu URL'den Applet görüntüler çok basit 4 görüntüdür

önerdi. bulmaya çalışmak

public class Main extends JApplet { 

    public void paint(Graphics g) { 
     JPanel panel = new JPanel(new GridLayout(2, 2)); 
     add(panel); 

     JLabel label1 = new JLabel(); 
     panel.add(label1); 
     JLabel label2 = new JLabel(); 
     panel.add(label2); 
     JLabel label3 = new JLabel(); 
     panel.add(label3); 
     JLabel label4 = new JLabel(); 
     panel.add(label4); 

     try { 
      URL url = new URL("YOU_IMAGE_URL.jpg"); 
      Image myPicture = getImage(url); 

      label1.setIcon(new ImageIcon(myPicture)); 
      label2.setIcon(new ImageIcon(myPicture)); 
      label3.setIcon(new ImageIcon(myPicture)); 
      label4.setIcon(new ImageIcon(myPicture)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 
+0

'frame.setMinimumSize (yeni Boyut (200, 200));' Boyutları tahmin etmeyin. 'pack()' çerçevesini, sonra boyutunu minimum boyut için temel olarak kullanın. –

+0

'new File (" test.jpg ")' Bu bir uygulamada çalışmayacaktır, çünkü mevcut olmayan bir dosya için yerel dosya sistemi (istemci makinesinin) aranacaktır! –

+0

@AndrewThompson Bunları işaretlediğiniz için teşekkür ederiz. Boyutun nasıl ayarlandığı değiştirildi. Sadece “GridLayout” kullanarak görüntüleri bir “JPanel” e nasıl yerleştireceğini sorduğunu düşündüm. Görüntüleri almak istediği hakkında hiçbir fikrim yok. –