Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Disegno JAVA

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    4

    Disegno JAVA

    Salve a tutti, sono nuovo del forum e nel mondo di Java, ho cominciato a muovere i primi passi nel mondo della programmazione orientata agli oggetti poche settimane fa e ora sto cercando di cimentarmi in piccoli programmi riassuntivi per avere una visione chiara di questo linguaggio.
    Vorrei postarvi un piccolo pezzo di codice scritto in fretta e furia che "dovrebbe" permettermi di tracciare su due assi cartesiani, una retta che da un generico punto(x,y) inserito in due TextField finisca nell'origine ma, appena provo a far partire l'applicazione, la console di Eclipse mi restituisce una seria di errori, potete aiutarmi?
    Immagini allegate Immagini allegate
    Ultima modifica di Ale1039; 19-09-2014 a 12:10

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ale1039 Visualizza il messaggio
    Vorrei postarvi un piccolo pezzo di codice scritto in fretta e furia che "dovrebbe" permettermi di tracciare su due assi cartesiani, una retta che da un generico punto(x,y) inserito in due TextField finisca nell'origine ma, appena provo a far partire l'applicazione, la console di Eclipse mi restituisce una seria di errori, potete aiutarmi?
    Come già diceva una volta Alex'87 ... che è 'sta mania degli screenshot praticamente illeggibili??

    Posta qui il codice e se c'è una eccezione/stack-trace posta anche questo (anche solo un pezzo di stack-trace ma almeno significativo)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    4
    Ecco il codice(Se vuoi posto anche gli errori ricevuti da console):


    codice:
    import java.awt.*;
    public class area extends Canvas
    {
        public void paint(Graphics g)
        {
            int a, b;
            a = Integer.parseInt(pianoCartesiano.X);
            b = Integer.parseInt(pianoCartesiano.Y);
            
            g.drawLine(-300, 0, 300, 0);
            g.drawLine(0, -300, 0, 300);
            g.drawLine(a, b, 0, 0);
        }
    }

    codice:
    import java.awt.*;
    public class pianoCartesiano 
    {
        public static String X;
        public static String Y;
        public static void main(String argv[])
        {
            Frame f = new Frame ("traccia linee");
            Panel p = new Panel();
            Label l1 = new Label("Coordinata x: ");
            Label l2 = new Label("Coordinata y: ");
            TextField x = new TextField(20);
            TextField y = new TextField(20);
            area a = new area();
            f.setSize(640,480);
            f.setLocation(640,480);
            f.setVisible(true);
            f.add(p);
            f.add(a);
            p.setLayout(null);
            p.setBackground(Color.white);
            p.add(l1);
            p.add(l2);
            p.add(x);
            p.add(y);
            l1.setBounds(30,20,80,25);
            l2.setBounds(30,45,80,25);
            x.setBounds(55,20,110,20);
            y.setBounds(55,45,110,20);
            String X = x.getText();
            String Y = y.getText();
            
        }
    }
    Ultima modifica di LeleFT; 19-09-2014 a 12:21 Motivo: Aggiunti i tag CODE

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ale1039 Visualizza il messaggio
    Ecco il codice
    Mi spiace ma ci sono svariate cose che non vanno (cito le più evidenti).

    - Innanzitutto stai usando componenti AWT. Non che sia sbagliato, di per sè. Ma AWT è il primo (e più vecchio) framework GUI di Java. Se non ci sono motivazioni/imposizioni ben precise, sarebbe meglio passare a Swing, che è anche più flessibile su molti aspetti.

    - Il design delle classi comunque non è granché, e mi riferisco principalmente a quelle due variabili static X/Y che sono pubbliche e accedute da un'altra classe. Queste cose, in genere, non si fanno.

    - In ogni caso, tutto quanto ha poco senso. I getText li fai al fondo del main, prima ancora che il tuo frame compaia a video. Quindi X e Y sono stringhe vuote "" e pertanto appena comparirà a video il tuo Canvas "area", il primo parseInt fallirà con un bel NumberFormatException, perché "" non è valido.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    4
    Perfetto, almeno mi hai fatto capire che ho ancorma molta strada davanti, se potessi chiederti un favore, potresti postare appena hai un po di tempo un codice fatto da te che mi permetta di confrontarli e capirne le differenze?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ale1039 Visualizza il messaggio
    potresti postare appena hai un po di tempo un codice fatto da te che mi permetta di confrontarli e capirne le differenze?
    Certo, questo è un semplice esempio, fatto al volo (e pertanto senza essermi preoccupato più di tanto di avere un buon layout, ecc...)

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class LineaSuPiano {
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new LineaSuPianoFrame().setVisible(true);
                }
            });
        }
    }
    
    class LineaSuPianoFrame extends JFrame implements ActionListener {
        private JTextField xTextField;
        private JTextField yTextField;
        private LineaSuPianoPanel lineaSuPianoPanel;
    
        public LineaSuPianoFrame() {
            super("Linea su piano");
    
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setSize(500, 400);
    
            xTextField = new JTextField(5);
            yTextField = new JTextField(5);
            lineaSuPianoPanel = new LineaSuPianoPanel();
            lineaSuPianoPanel.setBackground(Color.WHITE);
    
            xTextField.addActionListener(this);
            yTextField.addActionListener(this);
    
            JPanel inputPanel = new JPanel();
            inputPanel.add(xTextField);
            inputPanel.add(new JLabel(" , "));
            inputPanel.add(yTextField);
    
            getContentPane().add(inputPanel, BorderLayout.NORTH);
            getContentPane().add(lineaSuPianoPanel, BorderLayout.CENTER);
        }
    
        // invocato quando si preme <invio> su xTextField o yTextField.
        public void actionPerformed(ActionEvent e) {
            try {
                int x = Integer.parseInt(xTextField.getText());
                int y = Integer.parseInt(yTextField.getText());
    
                lineaSuPianoPanel.setPuntoDest(new Point(x, y));
            } catch (NumberFormatException nfe) {
                lineaSuPianoPanel.setPuntoDest(null);  // annulla punto, cioè cancella la linea
                JOptionPane.showMessageDialog(this, "Valore x e/o y mancante o errato");
            }
        }
    }
    
    class LineaSuPianoPanel extends JPanel {
        private Point puntoDest;
    
        public void setPuntoDest(Point puntoDest) {
            this.puntoDest = puntoDest;
            repaint();
        }
    
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
    
            if (puntoDest != null) {
                g.drawLine(0, 0, puntoDest.x, puntoDest.y);
            }
        }
    }

    Quando scrivi valori corretti di x e y nei due campi e premi invio su uno dei due, nel pannello viene disegnata una linea dalla origine (0,0) del pannello a (x,y).
    Se hai dubbi, chiedi pure.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    4
    Ti ringrazio sei stato di grande aiuto

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Come già diceva una volta Alex'87 ... che è 'sta mania degli screenshot praticamente illeggibili?
    wow sono famoso
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.