es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo saber en qué JTextPane se encuentra el cursor?

Tengo varios JTextPanes y quiero crear un método que establezca el valor de una variable con el nombre del TextPane que ha sido clicado porque otro método lo va a utilizar. También hay un botón que agrega un nuevo jTextPane cuando el usuario hace clic en él y quiero que esos nuevos TextPanes hereden ese método. O si conoces una forma más sencilla de lograr eso, estoy abierto a leerte. Avísame si necesitas más información o más código.
“`
static JTextPane focus;

private void redColorActionPerformed(java.awt.event.ActionEvent evt) { //Este es el método que trabaja con la variable focus. Cambia el color del texto en el TextPane clicado.
TextEditor.cambiarColor(new java.awt.Color(255, 0, 0), focus);
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes lograr esto implementando un escucha de eventos MouseClick en cada JTextPane de la siguiente manera:

    Primero, inicializa la variable de enfoque como nula:

    static JTextPane focus = null;
    

    Luego, para cada JTextPane que crees, agrega un escucha de eventos MouseClick que establezca la variable de enfoque como el nombre del JTextPane que se haya hecho clic:

    JTextPane textPane1 = new JTextPane();
    textPane1.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            focus = textPane1;
        }
    });
    

    Ten en cuenta que debes modificar el código anterior para que coincida con el nombre de cada JTextPane que crees.

    Finalmente, cuando se hace clic en el botón para agregar un nuevo JTextPane, agrega un nuevo escucha de eventos MouseClick al nuevo JTextPane para que herede el mismo comportamiento:

    JButton addButton = new JButton("Agregar JTextPane");
    addButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JTextPane newPane = new JTextPane();
            newPane.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    focus = newPane;
                }
            });
            // Agrega el nuevo JTextPane a tu interfaz de usuario aquí
        }
    });
    

    Con esta implementación, cada vez que se haga clic en un JTextPane diferente, la variable de enfoque se actualizará con el nombre del nuevo JTextPane. De esta manera, cuando se llame al método redColorActionPerformed, podrá utilizar la variable para acceder al JTextPane correcto y cambiar su color.

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.