Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - portocarrerojava

Páginas: [1]
1
Dos preguntas:

Primera: uso sistema operativo Windows, mala suerte con el 10 mi hermano hizo la actualización, que teclas empleo acá para que reconozca el hasNext, porque según lo que he leido debe ser ctrl z para windows e intro, pero nada, ni con ctrl d, y hay casos en lo que no es bueno estar usando centinela para aplicaciones mas practicas.

Segunda: cuando escribo un archivo de texto, uso el método formater de clase Formatter, ¿como puedo imprimir una nueva línea,  (¿se puede?)? uso el \n como aparece en el manual que sigo, pero parece que no lo reconoce y escribe todo seguido en el archivo de texto.

Gracias!!!!

2
Hola a todos, desde hace un tiempo me estoy iniciando en el mundo de Java.

Ahora estoy con un pequeño problema el cual es el siguiente: tengo una interfaz de 5 botones, para borrar la ultima figura, borrar todas las figuras, seleccionar un color, seleccionar el tipo de figura a dibujar (linea, ovalo o rectángulo) y si es relleno o no la figura. Ademas por medio de  eventos del mouse es que determino el punto de inicio y fin del dibujo y lo muestro en una barra de estado.

Sé que los eventos de los botones, de la lista (JComboBox) y el CheckBox funcionan porque puse que imprimiera en pantalla un mensaje cada vez que sucediera el evento, así mismo con el mouse, muestra las coordenadas en la barra de estado ademas de que muestra un mensaje en pantalla indicando  que se presiono o soltó o según el evento. El problema que tengo es que no dibuja nada, al parecer nunca entra al método paintComponent (Graphics g) habiendo hecho llamadas de repaint () donde deberia hacerlas. No se ejecuta el método paintComponent ¿por qué si llamo a repaint?

Alguien que me ayude, adjunto los tres principales archivos, por que los otros son clases de MiLinea, MiRectangulo y MiOvalo. el archivo PanelDibujo.java es el que contiene la interfaz que debe dibujar, MarcoDibujo es el que contiene los botones, checkbox, etc. y Prueba... es el que contiene el main. Gracias de antemano!

Clase MarcoDibujo

Código: [Seleccionar]
import java.awt.Color;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JCheckBox;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.GridLayout;

public class MarcoDibujo extends JFrame {
   
    private JButton deshacerFigura; //Deshace la ultima figura que se haya
                                    //dibujado
    private JButton borrarFiguras;  //Borra todas las figuras del dibujo
    private JComboBox coloresPreferidos;    //13 colores preferidos
    private JComboBox figuraDibujar;        //selecciona figura a dibujar
    private JCheckBox figuraRellena; //selecciona si la figura estara rellena o
                                     //no
    private JLabel barraEstado;
   
    private final String nombreColores [] = {"Negro", "Rojo", "Azul", "Rosado",
        "Amarillo", "Verde", "Naranja", "Celeste", "Morado", "Plomo", "Cyan",
        "Marron", "Blano"};
   
    private final String nombreFigura [] = {"Linea", "Rectangulo", "Ovalo"};
    private JPanel panelHerramientas;
   
    private Color colores [] = {Color.BLACK, Color.RED, Color.BLUE,
        Color.PINK, Color.YELLOW, Color.GREEN, Color.ORANGE, Color.lightGray,
        Color.MAGENTA, Color.GRAY, Color.CYAN, Color.darkGray, Color.WHITE};
   
    private MiFigura figura [] = {new MiLinea (), new MiRectangulo (),
            new MiOvalo ()};
   
    private PanelDibujo dibujo;
   
    public MarcoDibujo (){
        super ("Java Drawings");
       
        barraEstado = new JLabel ("(0, 0)");
        dibujo = new PanelDibujo (barraEstado);
       
        panelHerramientas = new JPanel ();
        panelHerramientas.setLayout (new GridLayout (1, 5));
               
        deshacerFigura = new JButton ("Deshacer Figura");
        deshacerFigura.addActionListener (
            new ActionListener (){
                public void actionPerformed (ActionEvent evento){
                    dibujo.borrarUltimaFigura();
                }
            }
        );
       
        borrarFiguras = new JButton ("Borrar Figuras");
        borrarFiguras.addActionListener (
            new ActionListener (){
                public void actionPerformed (ActionEvent evento){
                    dibujo.borrarDibujo();
                }
            }
        );
       
        coloresPreferidos = new JComboBox (nombreColores);
        coloresPreferidos.addItemListener (
            new ItemListener (){
                public void itemStateChanged (ItemEvent evento){
                    if (evento.getStateChange () == ItemEvent.SELECTED){
                        dibujo.establecerColorActual
                            (colores [coloresPreferidos.getSelectedIndex()]);
                    }
                }
            }
        );
       
        figuraDibujar = new JComboBox (nombreFigura);
        figuraDibujar.addItemListener (
            new ItemListener (){
                public void itemStateChanged (ItemEvent evento){
                    if (evento.getStateChange () == ItemEvent.SELECTED){
                        dibujo.establecerTipoFigura (
                            figura [figuraDibujar.getSelectedIndex ()]);
                    }   
                }
            }
        );
       
        figuraRellena = new JCheckBox ("Relleno / Sin Relleno");
        figuraRellena.addItemListener (
            new ItemListener (){
                public void itemStateChanged (ItemEvent evento){
                    dibujo.establecerFiguraRellena
                            (figuraRellena.isSelected ());
                }
            }
        );
       
        panelHerramientas.add (deshacerFigura);
        panelHerramientas.add (borrarFiguras);
        panelHerramientas.add (coloresPreferidos);
        panelHerramientas.add (figuraDibujar);
        panelHerramientas.add (figuraRellena);
       
        add (panelHerramientas, BorderLayout.NORTH);
        add (dibujo.obtenerPanelDibujo(), BorderLayout.CENTER);
        add (barraEstado, BorderLayout.SOUTH);
        setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);       
        setSize (1000, 400);
        setVisible (true);
    }
}

Clase PanelDibujo

Código: [Seleccionar]
import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseAdapter;
import java.awt.Graphics;

public class PanelDibujo extends JPanel {

    private MiFigura figuras [];    //almacena todas las figuras que se dibujan
    private int cuentaFiguras;      //cuenta el numero de figuras en el arreglo
    private int tipoFigura;         //Determine el tipo de figura a dibujar
    private MiFigura figuraActual;  //representa figura actual que se esta
                                    //dibujando
    private Color colorActual;      //representa el color del dibujo actual
    private boolean figuraRellena;  //determina si se dibuja una figura rellena
    private JLabel etiquetaEstado;  //representa la barra de estado representa
                                    //coordenadas de la posición actual del
                                    //raton
    private JPanel panelDibujo;
    private int posicionX;
    private int posicionY;
    private int posicionX1;
    private int posicionY1;
    private int posicionX2;
    private int posicionY2;
   
    public PanelDibujo (JLabel etiqueta){
       
        panelDibujo = new JPanel ();
       
        etiquetaEstado = etiqueta;
        figuras = new MiFigura [100];
        cuentaFiguras = 0;
        tipoFigura = 0;
        establecerTipoFigura (new MiLinea ());
        figuraActual = null;
        colorActual = Color.BLACK;
        panelDibujo.setBackground(Color.WHITE);
       
        ManejadorRaton manejador = new ManejadorRaton ();
        panelDibujo.addMouseListener (manejador);
        panelDibujo.addMouseMotionListener (manejador);
    }
   
    private class ManejadorRaton extends MouseAdapter
            implements MouseMotionListener {
        //maneja el evento cuando se oprime el raton
        public void mousePressed (MouseEvent evento){
            switch (tipoFigura){
                case 0:
                    figuraActual = new MiLinea ();
                    break;
                case 1:
                    figuraActual = new MiRectangulo ();
                    break;
                case 2:
                    figuraActual = new MiOvalo ();
                    break;
                default:
                    break;
            }
            posicionX1 = evento.getX ();
            posicionY1 = evento.getY ();
        }
       
        //manejo evento cuando se suelta el boton del raton despues de
        //arrastrarlo
        public void mouseReleased (MouseEvent evento){
            posicionX2 = evento.getX ();
            posicionY2 = evento.getY ();
            if (figuraActual instanceof MiLinea){
                figuras [cuentaFiguras] = new MiLinea (posicionX1, posicionY1,
                        posicionX2, posicionY2, colorActual);
                repaint ();
            }else if (figuraActual instanceof MiRectangulo){
                figuras [cuentaFiguras] = new MiRectangulo (posicionX1,
                        posicionY1, posicionX2, posicionY2, colorActual,
                        figuraRellena);
                repaint ();
            }else{
                figuras [cuentaFiguras] = new MiOvalo (posicionX1, posicionY1,
                        posicionX2, posicionY2, colorActual, figuraRellena);
                repaint ();
            }
            figuraActual = null;
            cuentaFiguras++;
        }
       
        //maneja evento cuando el usuario mueve el raton
        public void mouseMoved (MouseEvent evento){
            etiquetaEstado.setText (String.format ("(%d, %d)",
                    evento.getX(), evento.getY ()));
        }
       
        //el evento cuando el usuario arrastra el raton con el boton oprimido
        public void mouseDragged (MouseEvent evento){
            posicionX = evento.getX ();
            posicionY = evento.getY ();
            if (figuraActual instanceof MiLinea){
                figuras [cuentaFiguras] = new MiLinea (posicionX1, posicionY1,
                        posicionX, posicionY, colorActual);
                repaint ();
            }else if (figuraActual instanceof MiRectangulo){
                figuras [cuentaFiguras] = new MiRectangulo (posicionX1,
                        posicionY1, posicionX, posicionY, colorActual,
                        figuraRellena);
                repaint ();
            }else{
                figuras [cuentaFiguras] = new MiOvalo (posicionX1, posicionY1,
                        posicionX, posicionY, colorActual, figuraRellena);
                repaint ();
            }
            etiquetaEstado.setText (String.format ("(%d, %d)",
                    evento.getX(), evento.getY ()));
        }
    }
   
    public void paintComponent (Graphics g){
        super.paintComponent (g);
       
        System.out.println ("A Pintar");
       
        for (int count = 0; count < cuentaFiguras + 1; count++){
            if (figuras [count] != null)
                figuras [count].dibujar(g);
            else
                ;
        }
    }
   
    public void establecerTipoFigura (MiFigura figura){
        if (figura instanceof MiLinea){
            tipoFigura = 0;
        }else if (figura instanceof MiRectangulo){
            tipoFigura = 1;
        }else {
            tipoFigura = 2;
        }
    }
   
    public void establecerColorActual (Color color){
        colorActual = color;
    }
   
    public void establecerFiguraRellena (boolean rellena){
        figuraRellena = rellena;
    }
   
    public void borrarUltimaFigura (){
        cuentaFiguras--;
        if (cuentaFiguras < 0){
            cuentaFiguras = 0;
            repaint ();
        }else
            repaint ();
    }
   
    public void borrarDibujo (){
        cuentaFiguras = 0;
        repaint ();
    }   
   
    public JPanel obtenerPanelDibujo (){
        return panelDibujo;
    }
}

Clase MarcoFiguraJava

Código: [Seleccionar]
import java.awt.BorderLayout;
import javax.swing.JFrame;

public class PruebaMarcoFigura {
    public static void main (String args []){
       
        MarcoDibujo marco = new MarcoDibujo ();
       
    }
}

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".