Сюда задаем узконаправленные и не очень вопросы. Здесь можно быстрее получить ответ на волнующий вопрос и сэкономить время на создание и оформление темы. Также по возможности буду стараться отвечать на вопросы и оказывать помощь по Java в рамках моих возможностей.
Добавлено (06 мая 2015, 06:08) --------------------------------------------- исправил ошибку, странно что стразу её не заметил в еюдуго прсхлуренц http://gcup.ru/forum/9-44187-1 мой Project 96
Сообщение отредактировал PoidetLi - Среда, 06 Мая 2015, 06:52
Другим с такой же ошибкой было бы полезно узнать, как ее исправить.
ты про говнокод или что, если что то другое то там ошибка просто в внимательности и то что я 4 день не сплю ? в еюдуго прсхлуренц http://gcup.ru/forum/9-44187-1 мой Project 96
Большая часть ошибок вытекает из невнимательности, и не всегда можно быстро найти корень. А твой ответ ускорил бы это. Ну да ладно, твое дело
ошибка в том что мне было лень снова писать функцию с другими условиями и я с копипастил, всё изменил кроме <= на > в еюдуго прсхлуренц http://gcup.ru/forum/9-44187-1 мой Project 96
public void main(String[] args) { JFrame okno = new JFrame(); okno.setDefaultCloseOperation(EXIT_ON_CLOSE); okno.setLayout(new FlowLayout()); JTextField pole1 = new JTextField(12); JTextField pole2 = new JTextField(12); JButton ok = new JButton("ok"); okno.add(pole1); okno.add(pole2); okno.add(ok);
ok.addActionListener(new okAL());
String text1 = ok.getText();
okno.setVisible(true); okno.pack();
}
public class okAL implements ActionListener {
@Override public void actionPerformed(ActionEvent event){ String text1 = pole1.getText(); pole2.setText(text1);
} }
}
как сделать поле1 поле2 глобальными(чтоб работали в слушателе внизу кода)?... если сую прямо в класс листенер, то выдает ошибку (главный класс не найден). PS.я чайник, только начал изучать java,надеюсь объясните доступно. Читаю смотрю, но до всего сразу не могу дойти.
Сообщение отредактировал kol9mbo - Вторник, 16 Июня 2015, 23:46
Можно вынести их за пределы main и сделать статическими, приписав вначале слово static. А можно прибегнуть к анонимным классам, добавив слушатель таким образом:
Код
ok.addActionListener(new ActionEvent() { public void actionPerformed(ActionEvent event){ pole2.setText(pole1.getText()); } });
public class Listener { static JTextField pole1 = new JTextField(12); static JTextField pole2 = new JTextField(12);
public void main(String[] args) { JFrame okno = new JFrame(); okno.setDefaultCloseOperation(E
не находит главный класс... PS.даже без Static писать, но в классе, а не в воид, то находит внизу переменные.pole1 pole2.
ok.addActionListener(new ActionEvent() { public void actionPerformed(ActionEvent event){ pole2.setText(pole1.getText()); } });
как точно это поставить и что у себя убрать... всяко пробовал чтот не выходит.
PS. и еще 1 раз вынесу за воид что-нибудь(как в 1 спойлере), сохраню(теряет главный класс), верну как было(но класс уже потерян,он больше не находит его,приходится создавать новый проект,удаляя старый).
Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 09:28
(Error: Main method is not static in class listener.Listener, please define the main method as: public static void main(String[] args) Java Result: 1 СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд) )
а это на второй:
Error: Main method is not static in class listener.Listener, please define the main method as: public static void main(String[] args) Java Result: 1
может надо унаследовать класс? тогда все данные будут доступны. только что куда я хз_))
Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 10:50
kol9mbo, не очень ясно... ты скопировал код Edison6? Потому что его код по ссылкам абсолютно рабочий. У тебя же не статичен метод main (на что, собственно и ругается компилятор). Ключевое слово static перед main'ом есть?
Добавлено (17 июня 2015, 12:23) --------------------------------------------- Я просто скопировал код Edison'a и скомпилировал его в командной строке, все прекрасно работает:
Сообщение отредактировал Remmintan - Среда, 17 Июня 2015, 12:14
все сделал-работает, большое спасибо.Сижу читаю про static и final Static - переменная стала глобальной, верно понял? а до этого она использовалась,только внутри класса(думал это делает public/private);
final- говорится мол, не может иметь подклассов, и используется ,когда спецификация класса заморожена.Ничего толком не ясно_))))
Можно расписать ,то что он(Edison6) сделал каждым исправлением?Простыми словами=)
Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 15:51
kol9mbo, Простыми словами, статические поля/методы/классы и т.п. принадлежат самому классу и существуют в одном экземпляре во всей программе, в то время как не статические элементы принадлежат экземпляру класса и существуют в каждом из них независимо друг от друга.
Код
public class TestClass { public static final int TEST = 12;
public int var; } int v = TestClass.TEST; // так осуществляется доступ к статическим полям; TestClass tc = new TestClass(); int v = tc.var; // доступ к не статическим полям;
Цитатаkol9mbo ()
Можно расписать ,то что он(Edison6) сделал каждым исправлением?
FadeBaker, в полном это хорошо для меня=) Чтоб видеть картинку,что куда... тк только начинаю) да и ошибку выдавал нет бинс всеравно...чтот обновилось там криво.
всеравно всем спасибо за ответы,разобрался, но уверен еще не раз столкнусь,с этим, но уже буду хотяб примерно знать в каком направлении двигаться.
Чтот я один пишу=)
import javax.swing.table.AbstractTableModel;
public class BookTableModel extends AbstractTableModel {
private static final long serialVersionUID = 3883320516766381209L;
@Override public int getColumnCount() { // TODO Auto-generated method stub return 0; }
@Override public int getRowCount() { // TODO Auto-generated method stub return 0; }
@Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return null; }
}
старый вопрос
private static final long serialVersionUID = 3883320516766381209L; -зачем эта строка, что делает итд, в интеренете нашел,мол это индитификационный номер в Unix-подобных операционных системах. Что нам дает он тут*? могу ли я написать любой другой? если нет , то почему имеено эти цифры, откуда это берется ... всё побольше и доходчиво для тупня=)
Просто описанные уроки, примеры, почему-то проскакивают моменты, когда нужно обьяснять всё. со своими заготовками, не обьясняя это раньше. А когда нахожу в интерете что и куда, в голове путаница(тк обьем большой).
новый вопрос
делаю следующее: открывается окно с кнопкой, при нажатии на неё открывается новый JFrame. А старый становится невидим.Но он запущен,как закрыть его полностью?
Сообщение отредактировал kol9mbo - Вторник, 23 Июня 2015, 23:16
Как в Java запретить изменение объекта, переданного в качестве аргумента в метод? Например, есть у меня такой интерфейс:
Код
public interface Collidable extends Spatial { ... public void onCollision(Collidable other); // process effect on this by other object .... }
Я хочу в методе onCollision защитить объект other от изменения. В C++ все просто - передаешь его по константной ссылке и все. В Java технических средств кроме final нет для этого (но final защищает только ссылку, а не сам объект). Есть еще идиоматические средства. Например принцип immutable object - Collidable сейчас не содержит методов, изменяющих состояние, но это контролируется исключительно мной, нельзя запретить изменение с проверкой во время компиляции - вдруг, я захочу добавить в интерфейс еще чего-нибудь. Или как-то можно это сделать? Какие есть устоявшиеся методики для решения таких проблем?
Например принцип immutable object - Collidable сейчас не содержит методов, изменяющих состояние, но это контролируется исключительно мной, нельзя запретить изменение с проверкой во время компиляции - вдруг, я захочу добавить в интерфейс еще чего-нибудь.
Поскольку содержимое интерфейса контролируется тобой, никто не мешает тебе сделать ещё один интерфейс, содержащий лишь методы для чтения, и сделать основной интерфейс (добавляющий методы для изменения состояния) его расширением. После метод onCollision будет принимать CollidableReadOnly, к которому переданный аргумент будет успешно приводится.
И так делать для любого объекта, который я хочу защитить от изменения? Тогда другой вопрос: это реально проблема Java, что там нет простого решения для этого, или это моя проблема, что я проецирую опыт C++ сюда, а в Java таких проблем нет вообще, и все решается на уровне проектирования интерфейсов?