Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Disegno JAVA

Hybrid View

  1. #1
    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

  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
    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

  3. #3
    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?

  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
    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

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 © 2026 vBulletin Solutions, Inc. All rights reserved.