2012-05-24 1 views
1

Я создал один кадр и отображаю изображение в рамку. но я не могу установить размер фрейма. Поскольку я пробовал следующий код, но его дал мне часть изображения, которое я установил, Не весь образ. Пожалуйста, помогите мне изменить размер изображения.java: как изменить размер кадра containg image

JFrame frame = new JFrame("My Window"); 
frame.setSize(200,200); 
int frameWidth = 200; 
int frameHeight = 200; 
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setBounds((int) screenSize.getWidth() - frameWidth, 0, frameWidth, frameHeight); 
frame.pack(); 
frame.setVisible(true); 
+0

Вы пытались использовать метод .setSize() с разными параметрами? – Ewald

+0

Я пробовал только метод .setSize (высота, ширина). Есть ли другой метод, кроме этого? – Anjali

+0

Как насчет публикации всего приложения, чтобы мы могли видеть, как вы добавляете изображение и т. Д. Возможно, мы сможем обнаружить что-то, что может вам помочь? – Ewald

ответ

3

Вы смешиваете absolute positioning и использование layout managers. Когда вы звоните setSize() или setBounds(), вы используете абсолютную раскладку, то есть вручную управляете размером и местоположением своих компонентов.

Когда вы вызываете pack(), вы делегируете калибровку и позиционирование Менеджерам LayoutManager компонента внутри вашего фрейма. Позиция LayoutManager и размер компонентов на основе их предпочтительного/минимального/максимального размера и ограничений. Посмотреть все о LayoutManager's here.

Я бы рекомендовал полагаться на LayoutManagers, потому что он работает лучше на разных платформах, и ваш код будет чище.

3
package test.t100.t004; 

import java.awt.Image; 
import java.net.URL; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JScrollPane; 
import javax.swing.SwingUtilities; 

public class ImageSizedGUI { 

    ImageSizedGUI(Image image) { 
     JLabel label = new JLabel(new ImageIcon(image)); 

     JFrame f = new JFrame("Image"); 
     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     // either this, or.. 
     f.setContentPane(new JScrollPane(label)); 

     f.pack(); 
     // ..this, but could produce undesirable results for images 
     // that are larger than screen size! 
     // f.setMinimumSize(f.getSize()); 
     f.setLocationByPlatform(true); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) throws Exception { 
     String address = (args.length>0 ? args[0] : 
       "http://pscode.org/media/stromlo2.jpg"); 
     URL url = new URL(address); 
     final Image image = ImageIO.read(url); 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       new ImageSizedGUI(image); 
      } 
     }); 
    } 
}