Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

γεια σας, πως στην actionPerformed ξεχωρίζει και παίρνει μονο τα κουμπιά του c JPanel, δηλαδή το button[0] αντιστοιχεί στο 7, που είναι το πρώτο κουμπί του c JPanel, πως ξεχωρίζει πχ και "πιάνει" μονο τα κουμπιά του c JPanel? και δεν "πιάνει" πχ του b JPanel? πως θα προσθέσω και τα κουμπιά του b JPanel στην actionPerformed ? δηλαδή τα Backspace,CE και C?

 

 

ο κώδικας που έχω μέχρι στιγμής :

 

 

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
public class Calculator2 extends JFrame implements ActionListener
{
    String s="";
    JButton[] buttons=new JButton[23];
    JTextField screen=new JTextField();
    JPanel a=new JPanel();
    JPanel b=new JPanel();
    JPanel c=new JPanel();
    
    public Calculator2()
    {
        super("Calculator");
        setSize(380,250);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        a.setLayout(new GridLayout(1,1));
        a.add(screen);
        b.setLayout(new GridLayout(1,1));
        for (int i=0; i<3; i++)
        {
            switch(i)
            {
                case 0: buttons=new JButton("Backspace");
                break;
                case 1: buttons=new JButton("CE");
                break;
                case 2: buttons=new JButton("C");
                
                
            }
            b.add(buttons);
            buttons.addActionListener(this);
        }
        
        c.setLayout(new GridLayout(4,5));
        for (int i=0; i<20; i++)
        {
            switch(i)
            {
                case 0: buttons=new JButton("7");
                break;
                case 1: buttons=new JButton("8");
                break;
                case 2: buttons=new JButton("9");
                break;
                case 3: buttons=new JButton("/");
                break;
                case 4: buttons=new JButton("sqrt");
                break;
                case 5: buttons=new JButton("4");
                break;
                case 6: buttons=new JButton("5");
                break;
                case 7: buttons=new JButton("6");
                break;
                case 8: buttons=new JButton("*");
                break;
                case 9: buttons=new JButton("1/x");
                break;
                case 10: buttons=new JButton("1");
                break;
                case 11: buttons=new JButton("2");
                break;
                case 12: buttons=new JButton("3");
                break;
                case 13: buttons=new JButton("-");
                break;
                case 14: buttons=new JButton("%");
                break;
                case 15: buttons=new JButton("0");
                break;
                case 16: buttons=new JButton("+/-");
                break;
                case 17: buttons=new JButton(".");
                break;
                case 18: buttons=new JButton("+");
                break;
                case 19: buttons=new JButton("=");
                
            }
            c.add(buttons);
            buttons.addActionListener(this);
        }
        
        setLayout(new BorderLayout());
        add(a,BorderLayout.PAGE_START);
        add(b,BorderLayout.CENTER);
        add(c,BorderLayout.PAGE_END);
        
    }
    @Override
    
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource()==buttons[0]) screen.setText(s+"7");
        s=screen.getText();
        if (e.getSource()==buttons[1]) screen.setText(s+"8");
        s=screen.getText();
        if (e.getSource()==buttons[2]) screen.setText(s+"9");
        s=screen.getText();
        if (e.getSource()==buttons[5]) screen.setText(s+"4");
        s=screen.getText();
        if (e.getSource()==buttons[6]) screen.setText(s+"5");
        s=screen.getText();
        if (e.getSource()==buttons[7]) screen.setText(s+"6");
        s=screen.getText();
        if (e.getSource()==buttons[10]) screen.setText(s+"1");
        s=screen.getText();
        if (e.getSource()==buttons[11]) screen.setText(s+"2");
        s=screen.getText();
        if (e.getSource()==buttons[12]) screen.setText(s+"3");
        s=screen.getText();
        if (e.getSource()==buttons[15]) screen.setText(s+"0");
        
        
        
        
    }
    
    public static void main(String[] args)
    {
        Calculator2 c=new Calculator2();
        c.setVisible(true);
        
    }
}

 

 

Δημοσ.

O κώδικας έχει λογικό λάθος.

 

Αρχικά ορίζει το παρακάτω

JButton[] buttons=new JButton[23];

Μετά κάνει το πρώτο for (ποιός ο λόγος να έχεις for και μέσα στο for switch για το i?)

for (int i=0; i<3; i++)        
{
  switch(i)
  {
    case 0: buttons[i]=new JButton("Backspace");
    break;
    case 1: buttons[i]=new JButton("CE");
    break;
    case 2: buttons[i]=new JButton("C");
  }
  b.add(buttons[i]);
  buttons[i].addActionListener(this);
}

και τα προσθέτει στο JPanel b. Όλα καλά ως εδώ

 

Μετά κάνει το δεύτερο for

for (int i=0; i<20; i++)
{
   switch(i)
   {
       case 0: buttons[i]=new JButton("7");
       break;
       case 1: buttons[i]=new JButton("8");
       break;
       case 2: buttons[i]=new JButton("9");
       break;
       case 3: buttons[i]=new JButton("/");
       break;
       case 4: buttons[i]=new JButton("sqrt");
       break;
       case 5: buttons[i]=new JButton("4");
       break;
       case 6: buttons[i]=new JButton("5");
       break;
       case 7: buttons[i]=new JButton("6");
       break;
       case 8: buttons[i]=new JButton("*");
       break;
       case 9: buttons[i]=new JButton("1/x");
       break;
       case 10: buttons[i]=new JButton("1");
       break;
       case 11: buttons[i]=new JButton("2");
       break;
       case 12: buttons[i]=new JButton("3");
       break;
       case 13: buttons[i]=new JButton("-");
       break;
       case 14: buttons[i]=new JButton("%");
       break;
       case 15: buttons[i]=new JButton("0");
       break;
       case 16: buttons[i]=new JButton("+/-");
       break;
       case 17: buttons[i]=new JButton(".");
       break;
       case 18: buttons[i]=new JButton("+");
       break;
       case 19: buttons[i]=new JButton("=");
                
   }
   c.add(buttons[i]);
   buttons[i].addActionListener(this);
}

Και στο δεύτερο for ξεκινάει πάλι από το 0 οπότε με τις 3 πρώτες περιπτώσεις στο δεύτερο for ουσιαστικά κάνει overwrite τα buttons που έβαλε στις θέσεις 0,1,2 του πίνακα buttons για τα Backspace,CE,C με το πρώτο for και βάζει στις θέσεις τους τα buttons για τα 7,8.9.

 

H λύση είναι να αλλαχτεί το δεύτερο for.

for (int i = 3; i < 23; i++)
            {
                switch (i)
                {
                    case 3: buttons[i] = new JButton("7");
                        break;
                    case 4: buttons[i] = new JButton("8");
                        break;
                    case 5: buttons[i] = new JButton("9");
                        break;
                    case 6: buttons[i] = new JButton("/");
                        break;
                    case 7: buttons[i] = new JButton("sqrt");
                        break;
                    case 8: buttons[i] = new JButton("4");
                        break;
                    case 9: buttons[i] = new JButton("5");
                        break;
                    case 10: buttons[i] = new JButton("6");
                        break;
                    case 11: buttons[i] = new JButton("*");
                        break;
                    case 12: buttons[i] = new JButton("1/x");
                        break;
                    case 13: buttons[i] = new JButton("1");
                        break;
                    case 14: buttons[i] = new JButton("2");
                        break;
                    case 15: buttons[i] = new JButton("3");
                        break;
                    case 16: buttons[i] = new JButton("-");
                        break;
                    case 17: buttons[i] = new JButton("%");
                        break;
                    case 18: buttons[i] = new JButton("0");
                        break;
                    case 19: buttons[i] = new JButton("+/-");
                        break;
                    case 20: buttons[i] = new JButton(".");
                        break;
                    case 21: buttons[i] = new JButton("+");
                        break;
                    case 22: buttons[i] = new JButton("=");
                        break;
                }
   c.add(buttons[i]);
   buttons[i].addActionListener(this);
}

Με την παραπάνω αλλαγή ο πίνακας πια έχει όλα τα buttons. Πρέπει μετά να αλλαχτεί η actionPerformed.
Η actionPerformed δέχεται σαν όρισμα ένα ActionEvent. Aν το ActionEvent "προήρθε" απο κάποιο button εκτελεί κάποιος εντολές.

 

Θα πρέπει μέσα σε αυτήν να βάλεις απο ένα if για κάθε στοιχείο του πίνακα buttons

if (e.getSource() == buttons[0])
{

}

Το παραπάνω είναι για το buttons[0].

if (e.getSource() == buttons[1])
{

}

Για το buttons[1] και ουτω το καθεξής.

 

Μετά για το τι πρέπει να κάνει μέσα στο κάθε if κοιτάς τα 2 for που έχω βάλει παραπάνω σε αυτό το post.

 

buttons[0] είναι το backspace

buttons[1] είναι το CE (Clear everything)

buttons[2] είναι το C (Clear)

...

Δημοσ.

το πρόγραμμα βγάζει μάτια! Προφανώς δεν έχει δει το προφανές! Δηλαδή απαριθμούμε με την for όταν έχουμε κάποια F(χ) να παίξει για κάθε χ. Εδώ λοιπόν αν βγάλουμε την For και την Switch και δώσουμε:

Αντί για αυτό

for (int i = 3; i < 23; i++)
            {
                switch (i)
                {
                    case 3: buttons[i] = new JButton("7");

...................

δώσουμε αυτό:

 

buttons[3] = new JButton("7");

 

 

κάνουμε το πρώτο βήμα για το σωστό πρόγραμμα!

Δεν χρησιμοποιούμε το For και το Switch για πλάκα!

  • Like 1
Δημοσ.

γιατί είναι περιττό που χρήσιμο την for και το switch? μου λες να φτιάξω τα κουμπιά ένα ένα, και μετά να τα προσθέσω στο panel ένα ένα?

 

επιπλέον, τι πρέπει να κάνω για να αλλάξω το μέγεθος τον κουμπιών? πχ στο panel b, αυτά τα 3 κουμπιά που έχω σε αυτό θέλω να τα μικρύνω, ξέρω πως τις διάστασης τις βάζει αυτόματα το layout, μπορώ να τις αλλάξω όμως?

 

ξανά ο κώδικας όπως τον έχω τώρα (έφτιαξα λίγο την for και έβαλα χρώμα σε κάποια κουμπιά, ευχαριστώ nucleus) :

 

 

 

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
public class Calculator2 extends JFrame implements ActionListener
{
    String s="";
    JButton[] buttons=new JButton[23];
    JTextField screen=new JTextField();
    JPanel a=new JPanel();
    JPanel b=new JPanel();
    JPanel c=new JPanel();
    
    public Calculator2()
    {
        super("Calculator");
        setSize(380,250);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        a.setLayout(new GridLayout(1,1));
        a.add(screen);
        b.setLayout(new GridLayout(1,1));
        for (int i=0; i<3; i++)
        {
            switch(i)
            {
                case 0: buttons=new JButton("Backspace");
                break;
                case 1: buttons=new JButton("CE");
                break;
                case 2: buttons=new JButton("C");
                
                
            }
            b.add(buttons);
            buttons.addActionListener(this);
            buttons.setForeground(Color.red);
        }
        
        c.setLayout(new GridLayout(4,5));
        for (int i=3; i<23; i++)
        {
            switch(i)
            {
                case 3: buttons=new JButton("7");
                break;
                case 4: buttons=new JButton("8");
                break;
                case 5: buttons=new JButton("9");
                break;
                case 6: buttons=new JButton("/");
                break;
                case 7: buttons=new JButton("sqrt");
                break;
                case 8: buttons=new JButton("4");
                break;
                case 9: buttons=new JButton("5");
                break;
                case 10: buttons=new JButton("6");
                break;
                case 11: buttons=new JButton("*");
                break;
                case 12: buttons=new JButton("1/x");
                break;
                case 13: buttons=new JButton("1");
                break;
                case 14: buttons=new JButton("2");
                break;
                case 15: buttons=new JButton("3");
                break;
                case 16: buttons=new JButton("-");
                break;
                case 17: buttons=new JButton("%");
                break;
                case 18: buttons=new JButton("0");
                break;
                case 19: buttons=new JButton("+/-");
                break;
                case 20: buttons=new JButton(".");
                break;
                case 21: buttons=new JButton("+");
                break;
                case 22: buttons=new JButton("=");
                buttons[6].setForeground(Color.red);
                buttons[7].setForeground(Color.red);
                buttons[11].setForeground(Color.red);
                buttons[12].setForeground(Color.red);
                buttons[16].setForeground(Color.red);
                buttons[17].setForeground(Color.red);
                buttons[18].setForeground(Color.red);
                buttons[19].setForeground(Color.red);
                buttons[20].setForeground(Color.red);
                buttons[21].setForeground(Color.red);
                buttons[22].setForeground(Color.red);
            }
            c.add(buttons);
            buttons.addActionListener(this);
            
        }
        
        setLayout(new BorderLayout());
        add(a,BorderLayout.PAGE_START);
        add(b,BorderLayout.CENTER);
        add(c,BorderLayout.PAGE_END);
        
    }
    @Override
    
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource()==buttons[2]) screen.setText("");
        
        if (e.getSource()==buttons[3]) screen.setText(s+"7");
        s=screen.getText();
        if (e.getSource()==buttons[4]) screen.setText(s+"8");
        s=screen.getText();
        if (e.getSource()==buttons[5]) screen.setText(s+"9");
        s=screen.getText();
        if (e.getSource()==buttons[8]) screen.setText(s+"4");
        s=screen.getText();
        if (e.getSource()==buttons[9]) screen.setText(s+"5");
        s=screen.getText();
        if (e.getSource()==buttons[10]) screen.setText(s+"6");
        s=screen.getText();
        if (e.getSource()==buttons[13]) screen.setText(s+"1");
        s=screen.getText();
        if (e.getSource()==buttons[14]) screen.setText(s+"2");
        s=screen.getText();
        if (e.getSource()==buttons[15]) screen.setText(s+"3");
        s=screen.getText();
        if (e.getSource()==buttons[18]) screen.setText(s+"0");
        
        
        
        
    }
    
    public static void main(String[] args)
    {
        Calculator2 c=new Calculator2();
        c.setVisible(true);
        
    }
}
Δημοσ.

Πρεπει να κοιταξεις λιγο την θεωρια και την λογικη του πως "τρεχει" ο κωδικας

Το for loop το θελουμε οταν εχουμε επαναλαμβανομενη εκτελεση.

Το switch το θελουμε οταν κανουμε επιλογη τι θα εκτελεστει.

 

Ολα τα case θα τα βγαλεις εξω απο το loop

 

Το μονο που θελει να ειναι μεσα στο for loop ειναι το:

c.add(buttons);

buttons.addActionListener(this);
Δημοσ.

 

γιατί είναι περιττό που χρήσιμο την for και το switch? μου λες να φτιάξω τα κουμπιά ένα ένα, και μετά να τα προσθέσω στο panel ένα ένα?

 

 

 

Μα έτσι και αλλιώς τα έχεις γράψει... αφαιρείς τη for και το switch/case και γράφεις το "i" στα buttons με το χέρι.

η for πχ θα είχε νόημα να την χρησημοποιήσεις στα νούμερα από 0 ως 9 κάπως έτσι(το 0 είναι το button[0], to 1 το button[1] κ.ο.τ.κ.)

 

for (i=0; i<=9; i++)
{
   buttons[i]=new JButton(""+i);
}

Αν δεν υπάρχει κάποιος εξωτερικός παράγοντας που σε αποτρέπει να κάνεις χρήση της javafx τότε χρησημοποίησετη, το swing είναι παρωχημένο

  • Like 1
Δημοσ.

Επίσης μπορείς να φτιάξεις έναν πίνακα η ένα ArrayList η ότι άλλο θες, βάζεις μέσα τα names των κουμπιών και τα φορτώνεις με την for.

String[] Names = new String[x] { "0","1"...,"sqrt","pow" ... };
for(int i = 0; i<Names.length; i++)
{
    buttons[i] = new JButton(Names[i]);
}

Θα συμφωνήσω με τα παιδιά ποιος ο λόγος να χρησιμοποιήσης swing αντί να δουλέψεις με JavaFX?

  • Like 2
Δημοσ.

Λοιπόν η For χρειάζεται όταν έχουμε προσπέλαση σε σειρά από έως...με κάποιο βήμα (συνήθως ένα). Όταν εκτελούμε όμως οποιαδήποτε δομή ροής (διότι το μέρος μέσα στο For τρέχει ξανά, άρα λέμε για ροή προγράμματος, άρα ροή), έχουμε στο  νου μας δυο πράγματα: Τι εισάγω και τι εξάγω.

στο     c.setLayout(new GridLayout(4,5));

        for (int i=3; i<23; i++)
        {
            switch(i)
            {
....... }  }
θες να εισάγεις jbuttons σε ένα πίνακα buttons[]. Θες όμως σε κάθε i να έχεις ξεχωριστή ετικέτα/όνομα στο jbutton. Αναφέρθηκε παραπάνω ότι μπορούν να μπουν σε πίνακα τα ονόματα και έτσι το i που θα παίξει για όλα τα buttons θα παίξει και για τα ονόματα.
Δες όμως τι έχεις κάνει. Απουσιάζει αυτός ο πίνακας και βάζεις μια άλλη δομή που λέει πάρε την απαρίθμηση και πήγαινε τη ροή σε ξεχωριστή γραμμή βάσει του i.
Οπότε ο compiler στο μυαλό σου, που έχει και Optimizer..λέει με απλά λόγια: Αν όπου i στις ξεχωριστές γραμμές βάλω το νούμερο στη case και πετάξω το switch τότε δεν έχω το ίδιο πράγμα;. Ασφαλώς το έχω, και το i δεν το χρειάζομαι παρά μόνο για αυτό
      c.add(buttons);
            buttons.addActionListener(this);
 
Οπότε βάζω πρώτα τις καταχωρήσειs των Buttons και μετά "για κάθε ι αριθμό του πίνακα των Buttons προσθέτω το button[i[, και το εγγράφω και σε ένα listener για να λογαριάζεται στα events."
 
Άμα αρχίσεις να περιγράφεις το πρόγραμμα που κάνεις θα δεις ότι θα βρίσκεις τα λάθη...Με το μάτι φαίνονται μόνο σε έμπειρα άτομα (και αυτό πάλι μπορεί να ξεγελαστεί, γιατί π.χ. δεν έχουμε όλη την εικόνα..ή γιατί συνήθως στο λάθος δεν λογαριάζουμε τις αρχικές συνθήκες, τι είχαμε - σε τι τιμές ήταν οι μεταβλητές ή σε τι κατάσταση τα αντικείμενα - πριν μπούμε σε ένα σημείο στο κώδικα).
Στο δικό σου for/switch...μπαίνεις με άδειο πίνακα και τον γεμίζεις νέα αντικείμενα και ταυτόχρονα γεμίζεις και το κεντρικό με αυτά. Κάνεις δυο πράγματα, ένα που δεν χρειάζεται το for (γιατί βάζουμε κάτι ειδικό σε κάθε i) και κάτι που χρειάζεται for (γιατί βάζουμε "καθένα" από τα buttons στο c )
 
Δημοσ.

Όπως αναφέρθηκε η Swing είναι ουσιαστικά  "νεκρή" και  έχει αντικατασταθεί από την JavaFX .Αν δεν είναι άσκηση από την σχολή κακώς κάθεσαι και σπαταλάς τον χρόνο σου με την Swing.

  • 3 εβδομάδες αργότερα...
Δημοσ.

θέλω όταν πατάω το υπομενου "Help" να μου εμφανίζει ένα παραθυράκι με πληροφορίες για το κουμπιουτεράκι(JOptionPane), τι πρέπει να διορθώσω για να γίνει αυτό? αγνοήστε τα υπόλοιπα, αυτό αν μπορεί κάποιος να μου πει πως να το φτιάξω, ευχαριστώ

 

το τελευταίο "getSource" είναι στην actionPerformed

 

package calculator2;
 
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
public class Calculator2 extends JFrame implements ActionListener
{
    String s="";
    JButton[] buttons=new JButton[23];
    JTextField screen=new JTextField();
    JPanel a=new JPanel();
    JPanel b=new JPanel();
    JPanel c=new JPanel();
    private JMenuBar Bar;
    private JMenu File;
    private JMenu Help;
    private JMenuItem Exit;
    
    
    
    public Calculator2()
    {
        super("Calculator");
        setSize(380,250);
        setResizable(false);
        a.setLayout(new GridLayout(1,1));
        a.add(screen);
        b.setLayout(new GridLayout(1,1));
        
        Bar=new JMenuBar();
        File=new JMenu("File");
        Help=new JMenu("Help");
        Exit=new JMenuItem("Exit");
        
        
        Bar.add(File);
        Bar.add(Help);
        File.add(Exit);
        
        Help.addActionListener(this);
        setJMenuBar(Bar);
        
        
        
  
        for (int i=0; i<3; i++)
        {
            switch(i)
            {
                case 0: buttons=new JButton("Backspace");
                break;
                case 1: buttons=new JButton("CE");
                break;
                case 2: buttons=new JButton("C");
                
                
            }
            b.add(buttons);
            buttons.addActionListener(this);
            buttons.setForeground(Color.red);
        }
        
        c.setLayout(new GridLayout(4,5));
        for (int i=3; i<23; i++)
        {
            switch(i)
            {
                case 3: buttons=new JButton("7");
                break;
                case 4: buttons=new JButton("8");
                break;
                case 5: buttons=new JButton("9");
                break;
                case 6: buttons=new JButton("/");
                break;
                case 7: buttons=new JButton("sqrt");
                break;
                case 8: buttons=new JButton("4");
                break;
                case 9: buttons=new JButton("5");
                break;
                case 10: buttons=new JButton("6");
                break;
                case 11: buttons=new JButton("*");
                break;
                case 12: buttons=new JButton("1/x");
                break;
                case 13: buttons=new JButton("1");
                break;
                case 14: buttons=new JButton("2");
                break;
                case 15: buttons=new JButton("3");
                break;
                case 16: buttons=new JButton("-");
                break;
                case 17: buttons=new JButton("%");
                break;
                case 18: buttons=new JButton("0");
                break;
                case 19: buttons=new JButton("+/-");
                break;
                case 20: buttons=new JButton(".");
                break;
                case 21: buttons=new JButton("+");
                break;
                case 22: buttons=new JButton("=");
                buttons[6].setForeground(Color.red);
                buttons[7].setForeground(Color.red);
                buttons[11].setForeground(Color.red);
                buttons[12].setForeground(Color.red);
                buttons[16].setForeground(Color.red);
                buttons[17].setForeground(Color.red);
                buttons[18].setForeground(Color.red);
                buttons[19].setForeground(Color.red);
                buttons[20].setForeground(Color.red);
                buttons[21].setForeground(Color.red);
                buttons[22].setForeground(Color.red);
                buttons[3].setForeground(Color.blue);
                buttons[4].setForeground(Color.blue);
                buttons[5].setForeground(Color.blue);
                buttons[8].setForeground(Color.blue);
                buttons[9].setForeground(Color.blue);
                buttons[10].setForeground(Color.blue);
                buttons[13].setForeground(Color.blue);
                buttons[14].setForeground(Color.blue);
                buttons[15].setForeground(Color.blue);
            }
            c.add(buttons);
            buttons.addActionListener(this);
            
        }
        
        setLayout(new BorderLayout());
        add(a,BorderLayout.PAGE_START);
        add(b,BorderLayout.CENTER);
        add(c,BorderLayout.PAGE_END);
        
    }
    
    
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource()==buttons[2]) screen.setText("");
        
        if (e.getSource()==buttons[3]) screen.setText(s+"7");
        s=screen.getText();
        if (e.getSource()==buttons[4]) screen.setText(s+"8");
        s=screen.getText();
        if (e.getSource()==buttons[5]) screen.setText(s+"9");
        s=screen.getText();
        if (e.getSource()==buttons[8]) screen.setText(s+"4");
        s=screen.getText();
        if (e.getSource()==buttons[9]) screen.setText(s+"5");
        s=screen.getText();
        if (e.getSource()==buttons[10]) screen.setText(s+"6");
        s=screen.getText();
        if (e.getSource()==buttons[13]) screen.setText(s+"1");
        s=screen.getText();
        if (e.getSource()==buttons[14]) screen.setText(s+"2");
        s=screen.getText();
        if (e.getSource()==buttons[15]) screen.setText(s+"3");
        s=screen.getText();
        if (e.getSource()==buttons[18]) screen.setText(s+"0");
        s=screen.getText();
        
        if(e.getSource()==Help)
        {
            JOptionPane.showMessageDialog(null,"Plirofories","plirofories gia to koubiouteraki", JOptionPane.INFORMATION_MESSAGE);
            
        }
        
        
        
        
    }
    
    public static void main(String[] args)
    {
        Calculator2 c=new Calculator2();
        c.setVisible(true);
        c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }
}
Δημοσ.

Χρειάζεσαι έναν ΜenuListener .

JMenu jmenu = new JMenu("HELP");
Listener listener = new Listener();
jmenu.addMenuListener(listener);
private class Listener implements MenuListener {

@Override
public void menuSelected(MenuEvent e) {
 // Κάνε τις ανάλογες ενέργειες
}

@Override
public void menuDeselected(MenuEvent e) {

}

@Override
public void menuCanceled(MenuEvent e) {

}
}
Δημοσ.

Οπως εχει αναφερθει απο πολλα ατομα, αυτο που κανεις δεν ειναι προγραμματισμος.  

 

Ο στοχος σου πρεπει να ειναι , γραφεις τα 

 

 c.setLayout(new GridLayout(4,5));

        for (int i=3; i<23; i++) {
            switch(i)  {
                case 3: buttons=new JButton("7");
               .......
                buttons[6].setForeground(Color.red);
               .......
                buttons[15].setForeground(Color.blue);
            }
            c.add(buttons);
            buttons.addActionListener(this);    
        }
       
    public void actionPerformed(ActionEvent e)  {
        if (e.getSource()==buttons[2]) screen.setText(""); 
       ....
 
σε οσες το δυνατον λιγοτερες σειρες. ( Και δεν εννοω απο 100 που ειναι τωρα 90, εννοω 15 ας πουμε). 
 
 
Επισης ελπιζω να καταλαβαινεις οτι οταν τρεχεις την  public void actionPerformed(ActionEvent e)
    {
        if (e.getSource()==buttons[2]) screen.setText("");
        
        if (e.getSource()==buttons[3]) screen.setText(s+"7");
        s=screen.getText();
        ......
    }
 
αμα εχει πατηθει το button 2 ελεγχεις 15  ifs, και θετεις το s = screen.getText() αλλες 15 φορες ετσι;
 
Το προβλημα σου δεν ειναι οτι δεν ξερεις, κανεις δεν ητανε μαγος οταν ξεκινουσε, το προβλημα ειναι οτι παρολο που γινανε υποδειξεις δεν εκανες την παραμικρη προσπαθεια να αλλαξεις κατι. Αμα ημουνα καθηγητης σου στο μαθημα αυτο το προγραμμα θα επρεπε να παρει κανα 3αρι, γιατι δεν εφαρμοζεις τιποτα να θυμιζει προγραμματισμο.
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...