#java
#java
Вопрос:
Прежде всего, немного информации, мы должны закодировать эту программу в школе, поэтому я бы хотел, чтобы, если я установил любой флажок, он должен мгновенно нарисовать квадрат / круг со значением, которое вы вводите в текстовое поле
Если флажок установлен, я хочу, чтобы он нарисовал круг или фигуру. Но это не сработает. Должен ли я что-то менять в методе paint или в методе itemStateChanged.
public class kreisrechner extends Applet implements ActionListener, ItemListener {
double umfang;
double flaeche;
int radius;
int value;
CheckboxGroup cbg;
Label lblradius = new Label("Radius: ");
Label lblumfang = new Label("Umfang: ");
Label lblflaeche = new Label("Fläche: ");
Label lbltext = new Label("Radius:");
Label lblerror = new Label("Checking...");
TextField txtEingabe = new TextField("0", 30);
Button cmdRechnen = new Button("Berechne");
Checkbox cbKreis = new Checkbox("Kreis", cbg, false);
Checkbox cbQuader = new Checkbox("Quader", cbg, false);
public void init() {
cbg = new CheckboxGroup();
Frame title = (Frame)getParent().getParent();
title.setTitle("Kreisrechner");
setSize(700, 700);
add(lblerror);
add(cbKreis);
add(cbQuader);
add(lbltext);
add(txtEingabe);
add(cmdRechnen);
add(lblradius);
add(lblumfang);
add(lblflaeche);
cmdRechnen.addActionListener(this);
cbKreis.addItemListener(this);
cbQuader.addItemListener(this);
}
public void itemStateChanged (ItemEvent e){
if (e.getSource() == cbKreis) {
cbg.setSelectedCheckbox(cbKreis);
getGraphics().drawOval(200, 200, value, value);
repaint();
} else if (e.getSource() == cbQuader) {
cbg.setSelectedCheckbox(cbQuader);
getGraphics().drawRect(200, 200, value, value);
repaint();
} else {
getGraphics().drawString("Bitte wähle eine Darstellungsform aus!", 300, 300);
}
}
public void actionPerformed(ActionEvent e) {
String preCheck = txtEingabe.getText();
int c = Integer.parseInt(preCheck);
if (c < 0) {
lblerror.setText("ERROR! Radius darf nicht negativ sein.");
} else {
lblerror.setText("OK!");
}
String eingabe = txtEingabe.getText();
umfang = Float.parseFloat(eingabe);
umfang = 6.283185307179586D * umfang;
lblumfang.setText(("Umfang:" umfang));
radius = Integer.parseInt(eingabe);
lblradius.setText("Radius:" eingabe);
flaeche = 3.141D * (double)(radius * radius);
lblflaeche.setText(("Fläche:" flaeche));
}
public void paint(Graphics g) {
if (cbQuader.getState()==true){
g.drawRect(200,200,value,value);
repaint();
} else {
return;
}
if (cbKreis.getState()==true){
g.drawOval(200,200,value,value);
repaint();
} else {
return;
}
String eingabe = txtEingabe.getText();
value = Integer.parseInt(eingabe);
g.drawString("r", 200 value / 3, 245 value / 3);
}}