Public void itemStateChanged(ItemEvent e)
Public void itemStateChanged(ItemEvent e)
{
Calculate(); // при изменении выбрано/не выбрано
}
});
form.add(cb1);
cb2 = new JCheckBox();
cb2.setBounds(20,70,180,20);
cb2.setText("Видеокарта");
cb2.setSelected(false);
cb2.addItemListener(new ItemListener()
{
{
Calculate();// при изменении выбрано/не выбрано
}
});
form.add(cb2);
lb = new JLabel();
lb.setBounds(20,220,400,40);
lb.setText("Ответ:");
form.add(lb);
form.show();
}
public void Calculate()
{
String s1;
Sum=0;
if(cb1.isSelected()==true)
{
Sum += 2500;
}
if(cb2.isSelected()==true)
{
Sum += 1300;
}
s1=Integer.toString(Sum);
s1="Ответ: "+s1;
lb.setText(s1);
}
public static void main (String args[])
{
Prog_2_5 f;
f= new Prog_2_5();
}
}
ME:
import javax.microedition.midlet.*;
import com.sun.lwuit.*;
import com.sun.lwuit.events.*;
import com.sun.lwuit.geom.*;
import com.sun.lwuit.layouts.*;
import java.lang.Math.*;
public class Prog_2_5 extends MIDlet
{
int Sum;
Form form;
CheckBox cb1;
CheckBox cb2;
Label lb;
public void startApp()
{
int w,h;
Dimension d=new Dimension(200,200);
Display.init(this);
form = new Form();
form.setPreferredSize(d);
form.setTitle("Лабораторная 2");
w=form.getWidth();
h=form.getHeight();
CoordinateLayout e = new CoordinateLayout(w,h);
form.setLayout(e);
cb1=new CheckBox();
cb1.setX(20);
cb1.setY(30);
cb1.setText("Процессор");
cb1.setSelected(true);
cb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Calculate();
}
});
form.addComponent(cb1);
cb2=new CheckBox();
cb2.setX(20);
cb2.setY(60);
cb2.setText("Видеокарта");
cb2.setSelected(false);
cb2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Calculate();
}
});
form.addComponent(cb2);
lb = new Label();
lb.setX(10);
lb.setY(220);
lb.setText("Ответ: ");
form.addComponent(lb);
form.show();
}
public void Calculate()
{
String s1;
Sum=0;
if(cb1.isSelected()==true)
{
Sum += 2500;
}
if(cb2.isSelected()==true)
{
Sum += 1300;
}
s1=Integer.toString(Sum);
s1="Ответ:"+s1;
lb.setText(s1);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
}
Запускается главный проект, следует установить!
можно убрать бегущий заголовок
cb2=new CheckBox();
cb2.setX(20);
cb2.setY(60);
cb2.setText("Видеокарта");
cb2.setSelected(false);
cb2.setTickerEnabled(false);
lb.setText("Ответ: ");
Если установить
lb.setText("Ответ:");
то при выполнении
s1="Ответ:"+s1;
lb.setText(s1);
строка обрезается (ширина Label уже не увеличивается)
5) Использование переключателей (radiobutton)
На C++ Builder
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->Top=0;
Form1->Left=0;
Form1->Width=500;
Form1->Height=400;
Form1->Caption="Лабораторная 2";
CheckBox1->Top=50;
CheckBox1->Left=20;
CheckBox1->Width=150;
CheckBox1->Height=20;
CheckBox1->Caption="Процессор";
CheckBox1->Checked=true;
CheckBox2->Top=70;
CheckBox2->Left=20;
CheckBox2->Width=150;
CheckBox2->Height=20;
CheckBox2->Caption="Видеокарта";
CheckBox2->Checked=false;
Label1->Top=320;
Label1->Left=20;
Label1->Width=400;
Label1->Height=40;
Label1->Caption="Ответ:";
RadioButton1->Left=20;
RadioButton1->Top=100;
RadioButton1->Width=150;
RadioButton1->Height=20;
RadioButton1->Checked=true;
RadioButton1->Caption="Обычный";
RadioButton2->Left=20;
RadioButton2->Top=130;
RadioButton2->Width=150;
RadioButton2->Height=20;
RadioButton2->Caption="Карточка";
RadioButton3->Left=20;
RadioButton3->Top=160;
RadioButton3->Width=150;
RadioButton3->Height=20;
RadioButton3->Caption="Дисконт";
}
Объединение радиокнопок через RadioGroup:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->Top=0;
Form1->Left=0;
Form1->Width=500;
Form1->Height=400;
Form1->Caption="Лабораторная 2";
CheckBox1->Top=50;
CheckBox1->Left=20;
CheckBox1->Width=150;
CheckBox1->Height=20;
CheckBox1->Caption="Процессор";
CheckBox1->Checked=true;
CheckBox2->Top=70;
CheckBox2->Left=20;
CheckBox2->Width=150;
CheckBox2->Height=20;
CheckBox2->Caption="Видеокарта";
CheckBox2->Checked=false;
Label1->Top=320;
Label1->Left=20;
Label1->Width=400;
Label1->Height=40;
Label1->Caption="Ответ:";
RadioGroup1->Top=100;
RadioGroup1->Left=20;
RadioGroup1->Width=150;
RadioGroup1->Height=120;
RadioGroup1->Caption="Вид оплаты";
RadioGroup1->Items->Add("Обычный");
RadioGroup1->Items->Add("Карточка");
RadioGroup1->Items->Add("Дисконт");
RadioGroup1->ItemIndex=0; // выбран обычный
}
Для произвольного размещения группы кнопок GroupBox.
Установим для RadioGroup отклик на событие выбрана одна из кнопок:
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
Calculate();
}
Измененный вариант Calculate()
double pr; - объявлена вместе с Sum
void TForm1::Calculate()
{
Sum=0;
if(CheckBox1->Checked==true)
{
Sum += 2500;
}
if(CheckBox2->Checked==true)
{
Sum += 1300;
}
if(RadioGroup1->ItemIndex==0)
{
// ничего не делать
}
if(RadioGroup1->ItemIndex==1)
{
// карточка + 3%
pr=Sum*0.03;
pr=floor(pr);
Sum += pr;
}
if(RadioGroup1->ItemIndex==2)
{
// дисконт - 10%
pr=Sum*0.1;
pr=floor(pr);
Sum -= pr;
}
Label1->Caption="Ответ: "+IntToStr(Sum);
}
На java ButtonGroup сам по себе невидим на форме, он объединяет радиокнопки, расположенные на форме:
Java SE
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.Math.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
public class Prog_2_5
{
int Sum;
JFrame form;
JCheckBox cb1;
JCheckBox cb2;
JLabel lb;
JRadioButton jr1;
JRadioButton jr2;
JRadioButton jr3;
ButtonGroup bg;
Prog_2_5 ()
{
form = new JFrame();
form.setSize (500,300);
form.setTitle ("лабораторная 2");
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
form.setLayout(null);
cb1 = new JCheckBox();
cb1.setBounds(20,50,180,20);
cb1.setText("Процессор");
cb1.setSelected(true);
cb1.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
Calculate();
}
});
form.add(cb1);
cb2 = new JCheckBox();
cb2.setBounds(20,70,180,20);
cb2.setText("Видеокарта");
cb2.setSelected(false);
cb2.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
Calculate();
}
});
form.add(cb2);
lb = new JLabel();
lb.setBounds(20,220,400,40);
lb.setText("Ответ:");
form.add(lb);
jr1=new JRadioButton();