Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Изменение размера фрейма


Автор: max29 10.12.2017, 13:47
Доброго времени суток форумчане, как установить размеры фрейма(окна) равным размерам "изображённой картинки" на ней?
т.е. что бы окно приобретало размер картинки, или чтобы размер картинки приобретал максимально допустимый размер установленный во фрейме тобиш сжималась в размерах до нужного.
Вот код программы:
Код

public class MyJPanel extends JPanel implements ActionListener {
 
    JButton button = new JButton("Next image"),
            button2 = new JButton("previous image" + i);
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(),
            panel2 = new JPanel();
 
    public static int i = 0;
 
    public static void main(String[] args) {
        MyJPanel gui = new MyJPanel();
        gui.go();
    }
 
    class Inner implements ActionListener {
 
        @Override
        public void actionPerformed(ActionEvent e) {
            if (i > 0) {
                --i;
            }
            frame.repaint();
            button2.setText("previous image" + i);
        }
 
    }
 
    public void go() {
        panel.setBackground(Color.darkGray);
        panel2.setBackground(Color.darkGray);
        panel.add(button);
        panel2.add(button2);
 
        button.addActionListener(this);
        button2.addActionListener(new Inner());
        frame.getContentPane().add(panel, BorderLayout.PAGE_END);
        frame.getContentPane().add(panel2, BorderLayout.NORTH);
        frame.getContentPane().add(this);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(800, 600);//вот тут как можно написать чтобы окно приобретало размер картинки? Или чтобы картина приобретала размер окна(сжималась) не растягивалась по всему окну?
        frame.setVisible(true);
    }
 
    @Override
    public void paintComponent(Graphics g) {
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
        ArrayList<Image> images = new ArrayList<>();
        File[] files = new File("d:\\Оформление рабочего стола").listFiles();
        for (File f : files) {
            System.out.println(f.canRead() + " " + f.renameTo(f));
            images.add(new ImageIcon(f.getAbsolutePath()).getImage());
        }
        if (i < images.size()) {
            g.drawImage(images.get(i), 0, 0, getWidth(), getHeight(), this);//вот тут и подгоняется картинка под размер окна.
        }
 
        System.out.print("hello world");
 
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        i++;
        this.repaint();
        button.setText("Next image" + i);
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)