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-ой кнопки написал } }
|
|
|
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 СИЛЬНО упрощают процесс написания. По крайней мере жавадоки сможешь читать на ура без предварительной генерации и прямо в коде (а может даже писать )))
|
Если сказанное мной может быть понято двояко, и первый вариант тебя расстраивает, я имел ввиду второй |
|