ParanoidPanda

Untitled

Nov 5th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. // Bildbetrachter
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5.  
  6. public class Bildbetrachter extends JFrame {
  7. static Bildbetrachter m_fenster;
  8. String m_dateiname; // Имя файла
  9. Image m_aktBild; // Объект для отображения рисунка
  10. BildLeinwand m_bildanzeige; // JPanel - окно приложения
  11. int m_Xpos,m_Ypos; // позиция, в которой
  12. // находится левый верхний
  13. // угол изображения
  14. int m_bild_x1,m_bild_y1; // текущие координаты
  15. int m_bild_x2,m_bild_y2; // изображения
  16. int m_bildHoehe,m_bildBreite; // Высота и ширина в пикселах
  17.  
  18. // Обработка события
  19. class MeinActionLauscher implements ActionListener {
  20. public void actionPerformed(ActionEvent e) {
  21. String Label;
  22.  
  23. Label = e.getActionCommand();
  24.  
  25. if(Label.equals("Закрыть"))
  26. System.exit(0);
  27.  
  28. if(Label.equals("Загрузить изображение"))
  29. bildLaden();
  30. }
  31. }
  32.  
  33. // В конструкторе размещаются Panel (как область
  34. // для отображения рисунка) и линейка меню
  35. Bildbetrachter(String titel) {
  36. super(titel);
  37.  
  38. m_Xpos = m_Ypos = 0; // Позиция запуска: слева вверху
  39. m_bild_x1 = m_bild_x2 = m_bild_y1 = m_bild_y2 = 0;
  40.  
  41. // Вначале никакое изображение не загружено
  42. m_dateiname = null;
  43. m_aktBild = null;
  44.  
  45. // Подключение Layout-менеджера
  46. setLayout(new FlowLayout());
  47.  
  48. // Создание экрана (производится от JPanel)
  49. m_bildanzeige = new BildLeinwand();
  50. add(m_bildanzeige);
  51.  
  52. // Обеспечение окна линейкой меню
  53. JMenuBar menueleiste = new JMenuBar();
  54. setJMenuBar(menueleiste);
  55.  
  56. // Создание всплывающего меню в линейке меню
  57. JMenu menu1 = new JMenu("Файл");
  58. JMenuItem item1 = new JMenuItem("Загрузить изображение");
  59. item1.addActionListener(new MeinActionLauscher());
  60.  
  61. JMenuItem item2 = new JMenuItem("Закрыть");
  62. item2.addActionListener(new MeinActionLauscher());
  63. menu1.add(item1);
  64. menu1.add(item2);
  65. menueleiste.add(menu1);
  66.  
  67. setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  68. }
  69.  
  70. // Загрузка файла с изображением
  71. public void bildLaden(){
  72. FileDialog d = new FileDialog(this,"Загрузить изображение...",FileDialog.LOAD);
  73. d.setVisible(true);
  74. m_dateiname = d.getFile();
  75.  
  76. // Если пользователь не выбрал файл c рисунком,
  77. // то будет возвращен null.
  78. // Тогда никаких дальнейших действий не выполняем.
  79. if(m_dateiname == null)
  80. return;
  81.  
  82. // Загрузка рисунка
  83. ImageIcon tmp = new ImageIcon(m_dateiname);
  84. m_aktBild = tmp.getImage();
  85.  
  86. // Получение высоты и ширины рисунка
  87. m_bildBreite = m_aktBild.getWidth(m_bildanzeige);
  88. m_bildHoehe = m_aktBild.getHeight(m_bildanzeige);
  89.  
  90. m_bild_x1 = m_Xpos;
  91. m_bild_y1 = m_Ypos;
  92. m_bild_x2 = m_bild_x1 + m_bildBreite;
  93. m_bild_y2 = m_bild_y1 + m_bildHoehe;
  94.  
  95. m_bildanzeige.repaint();
  96. }
  97.  
  98. public static void main(String[] args) {
  99. m_fenster = new Bildbetrachter("Просмотр изображений");
  100. m_fenster.setSize(800,700);
  101. m_fenster.pack();
  102. m_fenster.setVisible(true);
  103. }
  104.  
  105.  
  106. // Этот класс служит для воспроизведения изображения
  107. class BildLeinwand extends JPanel {
  108. // Рисование новой панели
  109. public void paintComponent(Graphics g) {
  110. super.paintComponent(g);
  111.  
  112. // Если изображение загружено, то оно показывается
  113. if(m_aktBild != null)
  114. g.drawImage(m_aktBild,m_Xpos,m_Ypos,this);
  115. }
  116.  
  117. public Dimension getMinimumSize() {
  118. return m_fenster.getSize();
  119. }
  120. public Dimension getPreferredSize() {
  121. return getMinimumSize();
  122. }
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment