Доброго времени суток форумчане, как установить размеры фрейма(окна) равным размерам "изображённой картинки" на ней? т.е. что бы окно приобретало размер картинки, или чтобы размер картинки приобретал максимально допустимый размер установленный во фрейме тобиш сжималась в размерах до нужного. Как в средстве просмотра фотографий Windows. Вот код программы: Код | 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); } }
|
Это сообщение отредактировал(а) max29 - 10.12.2017, 14:01
|