Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=5222621&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 10:11:51 2016
Кодировка: Windows-1251
help with simple Java code!!! - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  help with simple Java code!!!
      15.10.2006 22:00
 

package calculator;

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.*;

class okno extends JFrame {
public okno() {
setTitle("Calculator");
getContentPane().add(new CalculatorPanel());
}

public static void main(String[] args) {
okno frame = new okno();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(500,500,250,200);
frame.show();
}
}

class CalculatorPanel extends JPanel {
//создание экземпляров JButton
public CalculatorPanel() {
     GridBagLayout theGridBag = new GridBagLayout();
     setLayout(theGridBag);
     GridBagConstraints theConstraints = new GridBagConstraints();
//увеличим все компоненты до максимального размера
     theConstraints.fill = GridBagConstraints.BOTH;
//дисплей занимает всю верхнюю строку
     theConstraints.gridwidth = GridBagConstraints.REMAINDER;
     theConstraints.weightx = 1.0;
     JTextField display = new JTextField();
     theGridBag.setConstraints(display, theConstraints);
     add(display);
//добавление кнопок с использованием GridBagLayout
//как сюда добавить блок прослушивания?
     ActionListener out = new Show();
     b1.addActionListener(/*что сюда писать?*/);
}
}
class Show implements ActionListener{
  public void actionPerformed(ActionEvent e){
    JTextField display = new JTextField();
    display.setText("1");//это я пока для 1-ой кнопки написал
  }
}

Anonymous
Незарегистрирован
(172.16.54.122)

  Re: help with simple Java code!!! [re: user16]
      15.10.2006 22:16
 


 

user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: Anonymous]
      15.10.2006 22:18
 

что-то не так?

JUnit

Рег.: 08.03.2005
Сообщений: 3812
Из: Беляево
Рейтинг: 1621
  Re: help with simple Java code!!! [re: user16]
      15.10.2006 23:54
 

Разбираться в долбанном Swing-е желания нет (переходи на SWT/JFace), но последние строки настораживают. Что это у тебя JTextField такой короткоживущий? Формально, он даже ни с кем не связан (с родителем, например), кто мог бы его уберечь от Garbage Collector-а.

alepar

Рег.: 18.02.2004
Сообщений: 9216
Рейтинг: 3643
  Re: help with simple Java code!!! [re: user16]
      15.10.2006 23:59
 

Хоть бы написал, что хотел сделать, что не работает...

ЗЫ в шестой идее прикольный УИ дизигнер



Whatever you do in life will be insignificant, but it's very important that you do it.
_Ss_

Рег.: 21.11.2003
Сообщений: 4145
Рейтинг: 4662
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 01:00
 

В ответ на:

b1.addActionListener(/*что сюда писать?*/);



Пиши ананимуса:
code:
b1.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { // Сюда и пиши } } );

upd: Ты ж уже все написал, ток out туда вставить...





Редактировал _Ss_ (16.10.2006 01:03)
Если сказанное мной может быть понято двояко, и первый
вариант тебя расстраивает, я имел ввиду второй
_Ss_

Рег.: 21.11.2003
Сообщений: 4145
Рейтинг: 4662
  Re: help with simple Java code!!! [re: _Ss_]
      16.10.2006 01:01
 

ЗЫ. Русские камменты, это да....



Если сказанное мной может быть понято двояко, и первый
вариант тебя расстраивает, я имел ввиду второй
user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: _Ss_]
      16.10.2006 14:18
 

Я добавил после метода CalculatorPanel:
 
b1.addActionListener(
     new ActionListener(){
     public void ActionPerformed(ActionAvent e){
     display.setText("1");
     }
     }
     );

  

А класс Show удалил. Все-равно ругается! Не понимаю, что такое out?
JTextField я переместил из метода CalculatorPanel выше - в класс CalculatorPanel. Мне хотелось бы понять логику, как это работает: вроде пишешь сам все, думаешь правильно, а оно не хочет работать!

user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 14:46
 

Нет, вот так переписал:
 
 
code:
class CalculatorPanel extends JPanel { ActionListener out = new Show(); //... public CalculatorPanel() {//...} b1.addActionListener(ActionListener out);//вот здесь ему "ActionListener" не нравится! }//конец класса class Show implements ActionListener{ public void actionPerformed(ActionEvent event){ // JTextField display = new JTextField(); display.setText("1");//это я пока для 1-ой кнопки написал } }


В чем здесь дело?


user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 14:57
 

вот самый простой вариант:
 
code:
b1.addActionListener (//пишет, что здесь нужен какой-то идентификатор new ActionListener(){ public void actionPerformed(ActionEvent e) { display.setText("1"); } }); }


И все, больше ничего. Но все-равно не работает.

Fury
Down Under Resident

Рег.: 12.09.2003
Сообщений: 2013
Из: The most livable city
Рейтинг: 886
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 15:22
 

Ничего не имею против русских коментов - программа должна легко пониматься другим человеком. И русские коменты этому способствуют.
Но вот code convention тебе почитать, явно, стоит.

а по теме: что такое у тебя b1?
подозреваю, что это должна была быть кнопка, но боюсь, современные IDE еще пока не дошли до такой степени разумности, чтобы самим код дописывать

З.Ы.:
почитай хотя бы Брюса Эккеля - полезно будет...



Не обязательно быть лучше всех - достаточно просто быть лучше, чем неделю назад ;)
user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: Fury]
      16.10.2006 15:38
 

Все получилось!
Ну а теперь новый вопрос, почему это не работает:
 
code:
//метод добавления блоков прослушивания public void addAction(JButton button){ button.addActionListener ( new ActionListener(){ public void actionPerformed(ActionEvent e) { switch(getLabel(JButton button)){ case "1": display.setText("1"); break; case "2": display.setText("2"); break; default: display.setText("0"); } } });


Fury
Down Under Resident

Рег.: 12.09.2003
Сообщений: 2013
Из: The most livable city
Рейтинг: 886
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 15:44
 

потому, что нельзя делать свитч по строке

з.ы.:
уверен, тебе это сам компилятор должен был сообщить



Не обязательно быть лучше всех - достаточно просто быть лучше, чем неделю назад ;)
user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: Fury]
      16.10.2006 15:54
 

Но так тоже не работает:
 
code:
if (button.getLabel() == "1"){ display.setText("1"); } else{ display.setText("2"); }


Fury
Down Under Resident

Рег.: 12.09.2003
Сообщений: 2013
Из: The most livable city
Рейтинг: 886
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 16:08
 

е-мое, ну правда, потрать хотя бы час на прочтение книги

во-первых, в общем случае (со строками есть фича, когда они берутся из пула констант и тогда, действительно, окажутся равны, но в данном случае это не так) нельзя сравнивать строки (да и вообще объекты) через "==" - пользуйся equals
во-вторых, предыдущий код очень странный: в обработчика событий помещают switch или if/else, когда __один и тот же__ обработчик, вешается на несколько компонент - у тебя же на все кнопки вешается новый экземпляр слушателя
в-третьих, попробуй все-таки почитать сообщения от компилятора - подозреваю, что он ругается на display, который следовало бы сделать сделать полем класса, а не объявлять его внутри метода



Не обязательно быть лучше всех - достаточно просто быть лучше, чем неделю назад ;)
user16
newbie

Рег.: 13.09.2006
Сообщений: 27
Рейтинг: 0
  Re: help with simple Java code!!! [re: user16]
      16.10.2006 16:09
 

Нет, все круто, надо так писать:

 
code:
//метод добавления блоков прослушивания public void addAction(JButton button){ button.addActionListener ( new ActionListener(){ public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); if (start) { display.setText(""); start = false; } display.setText(display.getText() + input); } });


_Ss_

Рег.: 21.11.2003
Сообщений: 4145
Рейтинг: 4662
  Re: help with simple Java code!!! [re: Fury]
      17.10.2006 09:30
 

В ответ на:

он ругается на display, который следовало бы сделать сделать полем класса, а не объявлять его внутри метода



Можно просто final'ом объявить.
2автор. А ты где пишешь? Просто idea или eclipse СИЛЬНО упрощают процесс написания.
По крайней мере жавадоки сможешь читать на ура без предварительной генерации и прямо в коде
(а может даже писать )))



Если сказанное мной может быть понято двояко, и первый
вариант тебя расстраивает, я имел ввиду второй
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в