2017-03-27 3 views
0

Ich mache eine Art Berechnungsprogramm, bei dem der Benutzer die Anzahl der Getränke eingeben kann, die er bestellen möchte, und ein Knopf berechnet die Menge an Geld, die er bezahlen muss. Wenn sie die Lieferungsbox überprüften, wird ein Zuschlag von $ 30 für Lieferkosten hinzugefügt. Ich benutze isSelected, um zu überprüfen, ob sie ein Häkchen haben, wenn es angekreuzt ist oder nicht, aber es funktioniert nicht. Der Fehler, den ich bekomme, ist "die Methode isSelected() ist nicht definiert für den Typ Checkbox".isSelected() Checkbox error

import java.awt.*; 
import java.awt.event.*; 
public class hwextend{ 

static Frame frm = new Frame("Action Event"); 
static Checkbox ckb1 = new Checkbox("Delivery"); 
static Button btn = new Button("Calculate"); 
static TextField textfield1 = new TextField(); 
static TextField textfield2 = new TextField(); 
static TextField textfield3 = new TextField(); 
static TextField textfield4 = new TextField(); 
static TextField textfield5 = new TextField(); 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 



    GridLayout grid = new GridLayout (7,3); 
    btn.addActionListener(new ActListener()); 
    frm.setLayout(grid); 
    frm.setSize(400,200); 
    frm.setBackground(Color.pink); 


    Label lab1 = new Label ("Tea Series"); 
    Font font1 = new Font(null,Font.BOLD,12); 
    lab1.setFont(font1); 
    frm.add(lab1); 
    frm.add(new Label("")); 
    frm.add(new Label("")); 


    frm.add(new Label("Black Tea")); 
    frm.add(new Label("$70")); 
    frm.add(textfield1); 


    frm.add(new Label("Green Tea")); 
    frm.add(new Label("$70")); 
    frm.add(textfield2); 

    Label lab2 = new Label ("Special Flavor Series"); 
    lab2.setFont(font1); 
    frm.add(lab2); 
    frm.add(new Label("")); 
    frm.add(new Label("")); 


    frm.add(new Label("Alpine Tea")); 
    frm.add(new Label("$80")); 
    frm.add(textfield3); 


    frm.add(new Label("Stewed Oolong Tea")); 
    frm.add(new Label("$80")); 
    frm.add(textfield4); 


    frm.add(btn); 
    frm.add(ckb1); 


    frm.add(textfield5); 
    frm.addWindowListener(new WindowAdapter() 
    { 
      public void windowClosing (WindowEvent Event) { 
      System.exit (0); 
     } 
     } 
     ); 


    frm.setVisible(true); 
} 


static class ActListener implements ActionListener{ 
    public void actionPerformed(ActionEvent e) { 
     int a = Integer.parseInt(textfield1.getText().toString()); 
     int b = Integer.parseInt(textfield2.getText().toString()); 
     int c = Integer.parseInt(textfield3.getText().toString()); 
     int d = Integer.parseInt(textfield4.getText().toString()); 

     if (ckb1).isSelected()){ 
      textfield5.setText(String.valueOf((a+b)*70+(c+b)*80)+30); 
     } 
     else { 
     textfield5.setText(String.valueOf((a+b)*70+(c+b)*80)); 
     } 
      } 


} 

}

Antwort

0

Bitte benutzen Sie ckb1.getState() anstelle von ckb1.isselected()

Sie finden den aktualisierten Code adaequat

static Frame frm = new Frame("Action Event"); 
static Checkbox ckb1 = new Checkbox("Delivery"); 
static Button btn = new Button("Calculate"); 
static TextField textfield1 = new TextField(); 
static TextField textfield2 = new TextField(); 
static TextField textfield3 = new TextField(); 
static TextField textfield4 = new TextField(); 
static TextField textfield5 = new TextField(); 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 



    GridLayout grid = new GridLayout (7,3); 
    btn.addActionListener(new ActListener()); 
    frm.setLayout(grid); 
    frm.setSize(400,200); 
    frm.setBackground(Color.pink); 


    Label lab1 = new Label ("Tea Series"); 
    Font font1 = new Font(null,Font.BOLD,12); 
    lab1.setFont(font1); 
    frm.add(lab1); 
    frm.add(new Label("")); 
    frm.add(new Label("")); 


    frm.add(new Label("Black Tea")); 
    frm.add(new Label("$70")); 
    frm.add(textfield1); 


    frm.add(new Label("Green Tea")); 
    frm.add(new Label("$70")); 
    frm.add(textfield2); 

    Label lab2 = new Label ("Special Flavor Series"); 
    lab2.setFont(font1); 
    frm.add(lab2); 
    frm.add(new Label("")); 
    frm.add(new Label("")); 


    frm.add(new Label("Alpine Tea")); 
    frm.add(new Label("$80")); 
    frm.add(textfield3); 


    frm.add(new Label("Stewed Oolong Tea")); 
    frm.add(new Label("$80")); 
    frm.add(textfield4); 


    frm.add(btn); 
    frm.add(ckb1); 


    frm.add(textfield5); 
    frm.addWindowListener(new WindowAdapter() 
    { 
      public void windowClosing (WindowEvent Event) { 
      System.exit (0); 
     } 
     } 
     ); 


    frm.setVisible(true); 
} 


static class ActListener implements ActionListener{ 
    public void actionPerformed(ActionEvent e) { 
     int a = Integer.parseInt(textfield1.getText().toString()); 
     int b = Integer.parseInt(textfield2.getText().toString()); 
     int c = Integer.parseInt(textfield3.getText().toString()); 
     int d = Integer.parseInt(textfield4.getText().toString()); 

     if (ckb1.getState()){ 
      int res=((a+b)*70+(c+b)*80)+30; 
      textfield5.setText(String.valueOf(res)); 
     } 
     else { 
      int res=((a+b)*70+(c+b)*80); 
     textfield5.setText(String.valueOf(res)); 
     } 
      } 


} 

Sie wurden concatinating endgültige Antwort dh Liefergebühr für Probe Ich habe die Ausgabe Concatinating answer image

angeschlossen

und ich habe den Code geändert und den Screenshot für den modifizierten Code Changed output image

0

versuchen dies zu tun:

ckb1.addItemListener(new ItemListener() { 
@Override 
public void itemStateChanged(ItemEvent e) { 
    if(e.getState()) {//checkbox has been selected 
     //do something... 
    } else {//checkbox has been deselected 
     //do something... 
    }; 
} 

});

müssen Sie zuerst das Element Hörer hinzuzufügen und dann den Zustand erhalten

getState() einen boolean Wert zurückgeben und Sie die if-else verwenden können, Ihre Arbeit :)

0

Swing und AWT zu tun Checkboxen sind nicht das gleiche, während JCheckBox hat tatsächlich isSelected() Methode, die AWT Gegenstück nicht.

Auf jeden Fall würde ich vorschlagen Ereignis für Statusänderung verwenden Tracking statt den Zugriff auf eine UI Komponente direkt, z.B .:

checkbox.addItemListener(new ItemListener() { 
    public void itemStateChanged(ItemEvent e) { 
     System.out.printf("%s\n", e.getStateChange() == 1 ? "checked" : "unchecked"); 
    } 
}); 
Verwandte Themen