<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410246&amp;view=findpost&amp;p=3707599</guid>
        <pubDate>Fri, 17 Feb 2017 18:58:59 +0000</pubDate>
        <title>Передать многомерный массив методу в другой класс</title>
        <link>https://forum.sources.ru/index.php?showtopic=410246&amp;view=findpost&amp;p=3707599</link>
        <description><![CDATA[korvin: Слышал звон, но не знаешь, где он?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">final int MAXROWS = 100500;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Ты ведь в курсе, чем объявление переменной отличается от изменения значения переменной?]]></description>
        <author>korvin</author>
        <category>Java</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410246&amp;view=findpost&amp;p=3703789</guid>
        <pubDate>Tue, 24 Jan 2017 19:43:44 +0000</pubDate>
        <title>Передать многомерный массив методу в другой класс</title>
        <link>https://forum.sources.ru/index.php?showtopic=410246&amp;view=findpost&amp;p=3703789</link>
        <description><![CDATA[Барабасыч: Написал вот такую программу для примера, чтобы тонны кода не отвлекали от основного вопроса:<br>
Необходимо передать многомерный динамический массив (testImage ) методу saveImage в класс imageIO (его код здесь не приведен).<br>
В переменную testImage данные заносятся по нажатию пункта меню &lt;Изображение&gt;. По нажатию &lt;Сохранить&gt; переменная передается методу в другой класс.<br>
С реализацией подобного алгоритма с int не возникает проблем (в отличие от массива).   <br>
Подробнее в комментариях по ходу кода.<br>
<br>
Помогите понять в какую сторону &quot;копать&quot;. Много всего перепробовал но не помогло.<br>
Заранее благодарен за любую посильную помощь.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import java.awt.Dimension;</div><div class="code_line">import java.awt.Font;</div><div class="code_line">import java.awt.event.ActionEvent;</div><div class="code_line">import java.awt.event.ActionListener;</div><div class="code_line">import javax.swing.JFrame;</div><div class="code_line">import javax.swing.JMenu;</div><div class="code_line">import javax.swing.JMenuBar;</div><div class="code_line">import javax.swing.JMenuItem;</div><div class="code_line">import javax.swing.JOptionPane;</div><div class="code_line">&nbsp;</div><div class="code_line">public class imageMain {</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static void main(String[] args) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new imageMain();</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;imageMain(){</div><div class="code_line">&nbsp;&nbsp; &nbsp;////////////////////////Оболочка//////////////////////////</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;JFrame frame = new JFrame(&quot;Программа обработки изображений&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setLayout(null) ;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setVisible(true);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Font font = new Font(&quot;Arial&quot;, Font.PLAIN, 12);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;JMenu fileMenu = new JMenu(&quot;Файл&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fileMenu.setFont(font);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;JMenuItem imgFileItem = new JMenuItem(&quot;Изображение&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;imgFileItem.setFont(font);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fileMenu.add(imgFileItem);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;final JMenuItem saveItem = new JMenuItem(&quot;Сохранить&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;saveItem.setFont(font);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fileMenu.add(saveItem);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;saveItem.setEnabled(false);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;JMenuBar menuBar = new JMenuBar();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;menuBar.add(fileMenu);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setJMenuBar(menuBar);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setPreferredSize(new Dimension(650, 450));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.pack();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setLocationRelativeTo(null);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;frame.setVisible(true);</div><div class="code_line">&nbsp;&nbsp; &nbsp;////////////////////////Оболочка//////////////////////////</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;final int[][][] testImage = {null};//3D массив (в нем то и загвоздка)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;final int MAXROWS = 0;//Переменные int - 3 штуки для примера</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;final int MAXCOLS = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;final int Zamykanie[] = {0};</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;imgFileItem.addActionListener(new ActionListener(){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public void actionPerformed(ActionEvent event){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;final int MAXROWS = 100500;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;Значение MAXROWS: &quot;+MAXROWS);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;final int MAXCOLS = 101;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;Значение MAXCOLS: &quot;+MAXCOLS);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;saveItem.setEnabled(true);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;Было: Zamykanie = &quot;+Zamykanie[0]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Zamykanie[0] = 22;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;Задаем: Zamykanie = &quot;+Zamykanie[0]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;testImage[0][0][1] = 7;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}});</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;saveItem.addActionListener(new ActionListener(){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public void actionPerformed(ActionEvent event){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Если выполнять последовательно imgFileItem, а затем saveItem,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//то, по идее, MAXROWS и MAXCOLS должны существовать,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//однако, похоже, их &quot;зачистили&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Слышал, что это называется &quot;замыкание&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//&quot;Лечиться&quot; с помощью массива из 1-го элемента:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;\nА тут уже они не существуют:&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;MAXROWS = &quot;+MAXROWS);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;MAXCOLS = &quot;+MAXCOLS);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(&quot;A с этой все норм: Zamykanie = &quot;+Zamykanie[0]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Требуется передать в другой класс: imageIO.saveImage(testImage);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Как реализовано выше с Zamykanie (его «читает», но это int а не массив)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Где testImage это int[][][] testImage - трехмерный массив</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}});</div><div class="code_line">&nbsp;&nbsp; &nbsp;}//body</div><div class="code_line">}//imagemain</div></ol></div></div></div></div>]]></description>
        <author>Барабасыч</author>
        <category>Java</category>
      </item>
	
      </channel>
      </rss>
	