[RESOLVIDO] Não é possivel alterar componentes durante a execução?

6 respostas
alexandref93

Não é possivel alterar componentes durante a execução???
Por exemplo eu tenho um JEditorPane… setando o background dele na hora de execução vai certo… mas alterar durante a execução não conseguir!!!
É possivel??? Qual seria a solução???

Obrigado desde já!!!

6 Respostas

Francisco_Silva

É possível sim.
Caso queira modificar a cor de fundo de um JEditorPane ao clicar em um botão, é só colocar a instrução desejada no método da classe Listener…
Ex:

class MudarCorListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { editorPane.setBackground(Color.BLUE); } }

alexandref93

Eu fiz quase nesse estilo praticamente… se eu setar na hora que a janela abrir tudo bem… mas durante a execução não consigo isso =/

Francisco_Silva

Ja testei aqui e funcionou normalmente… posso trocar de cor a hora que eu quiser e quantas vezes quiser em tempo de execução.
.
Posta o seu código.
No seu caso pode estar faltando alguma coisa é só dar uma olhada.

alexandref93
package com.cube.forms;

import java.awt.Color;

public class MainFrame extends javax.swing.JFrame {

    public MainFrame() {
        initComponents();


    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();
        jScrollPane1 = new javax.swing.JScrollPane();
        jEditorPane1 = new javax.swing.JEditorPane();
        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu3 = new javax.swing.JMenu();
        jMenu4 = new javax.swing.JMenu();

        jMenu1.setText("File");
        jMenuBar1.add(jMenu1);

        jMenu2.setText("Edit");
        jMenuBar1.add(jMenu2);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jScrollPane1.setViewportView(jEditorPane1);

        jMenu3.setText("File");
        jMenu3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu3ActionPerformed(evt);
            }
        });
        jMenuBar2.add(jMenu3);

        jMenu4.setText("Edit");
        jMenuBar2.add(jMenu4);

        setJMenuBar(jMenuBar2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void jMenu3ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        jEditorPane1.setOpaque(true);
        jEditorPane1.setBackground(Color.GRAY);

    }                                      
    // Variables declaration - do not modify
    private javax.swing.JEditorPane jEditorPane1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration
}

Esse seria o código gerado pelo netBeans!!!
Jah setei pra alterar e nada =x

E ae… algum erro a vista???

Francisco_Silva
Sim...
private void jMenu3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jEditorPane1.setOpaque(true);  
        jEditorPane1.setBackground(Color.GRAY);  
  
    } 
.
.
.
    jMenu3.addActionListener(new java.awt.event.ActionListener() {//Perceba que você esta adicionando o Listener a um componente de Menu.  
        public void actionPerformed(java.awt.event.ActionEvent evt) {  
            jMenu3ActionPerformed(evt);  
       }  
    }); 
.
.
.
    private javax.swing.JMenu jMenu3;//Esse componente é um menu
O erro é simples... um menu serve apenas para conter itens a serem escolhidos e não disparar eventos.... sendo assim não acontece nada ao clicar no menu File. O certo seria adicionar um JMenuItem("Mudar cor de fundo") ao JMenu("File").... pois o JMenuItem é o componente que dispara o evento ao clicar do mause.... Ex:
JMenu3.add(JMenuItem1);//Adicionando item ao menu... dependendo de como for pode-se adicionar varios itens... item salvar, abrir, fechar....
.
.
.
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                      
        jEditorPane1.setOpaque(true);  
        jEditorPane1.setBackground(Color.GRAY);  
  
    } 
.
.
.
    jMenuItem1.addActionListener(new java.awt.event.ActionListener() { 
        public void actionPerformed(java.awt.event.ActionEvent evt) {  
            jMenuItem1ActionPerformed(evt);  
       }  
    }); 
.
.
.
private javax.swing.JMenuItem jMenuItem1;
Nunca usei o netBeans para gerar os códigos... então não tenho bem certeza de como se faz para adicionar os itens ao menus... acredito que seja apenas arrastar para dentro do menu desejado... O código a cima é só um exemplo, tentei fazer semelhante como o código gerado pelo netbeans, que na minha opinião é muito bagunçado e confuso...

Desse modo com certeza ira funcionar...

alexandref93

vlw… jah consegui resolver com seu exemplo!!
Obrigado!

Criado 6 de fevereiro de 2011
Ultima resposta 7 de fev. de 2011
Respostas 6
Participantes 2