Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    Disegnare un Rettangolo.



    Io ho utilizzato il codice in rosso per disegnare un rettangolo nel mio progetto, ma avrei due domande:

    1) il codice che ho utilizzato è adatto a ciò che dovrei fare, oppure devo cambiarlo?
    (mi riferisco al codice che crea il rettangolo)

    2) se volessi colorare il rettangolo di rosso, come devo fare?
    perché il codice g2.setColor(Color.red); non funziona..

    ps: non ho postato il main e l'altra classe perché non dovrebbero servire per la mia richiesta, ma in caso servisse posto tutto..

    codice:
    package Es_313;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import javax.swing.*;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    
    /**
     * @author Ongaro Samuele
     */
    
    public class Rectangle  extends JFrame implements ChangeListener, ActionListener {
        private JSlider scrollerR, scrollerG, scrollerB;
        private JLabel labelR, labelG, labelB;
        private JTextField textFieldR, textFieldG, textFieldB;
        private JButton genera;
        
        public Rectangle() {
            // Testo
            labelR = new JLabel("Red");
            labelG = new JLabel("Green");
            labelB = new JLabel("Blue");
            
            // Caselle di Testo
            textFieldR = new JTextField("0");
            textFieldG = new JTextField("0");
            textFieldB = new JTextField("0");
            
            // Bottone
            genera = new JButton("Genera Rettangolo");
            
            // Scroller
            scrollerR = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
            scrollerR.setMajorTickSpacing(40);
            scrollerR.setMinorTickSpacing(10);
            scrollerR.setPaintTicks(true);
            scrollerR.setPaintLabels(true);
            
            scrollerG = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
            scrollerG.setMajorTickSpacing(40);
            scrollerG.setMinorTickSpacing(10);
            scrollerG.setPaintTicks(true);
            scrollerG.setPaintLabels(true);
            
            scrollerB = new JSlider(SwingConstants.HORIZONTAL,0, 255, 0);
            scrollerB.setMajorTickSpacing(40);
            scrollerB.setMinorTickSpacing(10);
            scrollerB.setPaintTicks(true);
            scrollerB.setPaintLabels(true);
            
            // Posizionamento
            labelR.setBounds(20,15,250,20);
            labelG.setBounds(20,75,250,20);
            labelB.setBounds(20,135,250,20);
            
            textFieldR.setBounds(320,35,40,25);
            textFieldG.setBounds(320,95,40,25);
            textFieldB.setBounds(320,155,40,25);
            
            genera.setBounds(60,220,200,30);
            
            scrollerR.setBounds(20,35,290,40);
            scrollerG.setBounds(20,95,290,40);
            scrollerB.setBounds(20,155,290,40);
            
            Container cp = getContentPane();
            setLayout(null);
    
            // ggiungi
            cp.add(labelR);
            cp.add(labelG);
            cp.add(labelB);
            
            cp.add(textFieldR);
            cp.add(textFieldG);
            cp.add(textFieldB);
            
            cp.add(genera);
            
            cp.add(scrollerR);
            cp.add(scrollerG);
            cp.add(scrollerB);
    
            // Ascoltatori
            scrollerR.addChangeListener(this);
            scrollerG.addChangeListener(this);
            scrollerB.addChangeListener(this);
            
            genera.addActionListener(this);
        }
        
        MyColorChooser myColor = new MyColorChooser();
        String cR, cG, cB;
        
        public void paint(Graphics g) {
            Graphics2D g2=(Graphics2D)g;
            
            g2.draw(new Rectangle2D.Double(30,300,320,300));
            g2.setColor(Color.red);
        }
         
        public void stateChanged(ChangeEvent event) {
            if(event.getSource() == scrollerR || event.getSource() == scrollerG || event.getSource() == scrollerB) {
                String iRed = "" +scrollerR.getValue();
                String iGreen = "" +scrollerG.getValue();
                String iBlue = "" +scrollerB.getValue();
                
                textFieldR.setText(iRed);
                textFieldG.setText(iGreen);
                textFieldB.setText(iBlue);
                
                myColor.setColor(iRed, iGreen, iBlue);
            }
        }
        
        public void actionPerformed(ActionEvent e) {
            String c = e.getActionCommand();
            
            if(e.getSource() == genera) {
                // textFieldB.setText(myColor.getColorR());
                
                
            }
        }
    }
    Grazie mille a tutti..

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: Disegnare un Rettangolo.

    Originariamente inviato da Buzzz
    1) il codice che ho utilizzato è adatto a ciò che dovrei fare, oppure devo cambiarlo?
    (mi riferisco al codice che crea il rettangolo)
    Non ho guardato il codice a fondo ma mi sembra tu disegni nel paint del Frame , io avrei disegnato nel paintComponent di un JPanel al suo interno...ma questa è soltanto un'osservazione...poi non posso avviare il tuo codice quindi non posso nemmeno valutare a fondo il tuo programma (ho dato uno sguardo MOLTO superficiale)...


    Originariamente inviato da Buzzz
    2) se volessi colorare il rettangolo di rosso, come devo fare?
    perché il codice g2.setColor(Color.red); non funziona..

    colorare intendi riempire il rettangolo di rosso?
    usa il metodo "fill" di Graphics o Graphics2D
    il metodo "setColor" serve per settare il colore al Graphics in modo che poi utilizzi quel colore per disegnare...
    es:
    g.setColor (Color.RED);
    ora la tua "penna" avrà l'inchiostro rosso
    g.setColor (Color.BLACK);
    ora la tua "penna" avrà l'inchiostro nero


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.