[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???
É 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
packagecom.cube.forms;importjava.awt.Color;publicclassMainFrameextendsjavax.swing.JFrame{publicMainFrame(){initComponents();}@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){jMenuBar1=newjavax.swing.JMenuBar();jMenu1=newjavax.swing.JMenu();jMenu2=newjavax.swing.JMenu();jScrollPane1=newjavax.swing.JScrollPane();jEditorPane1=newjavax.swing.JEditorPane();jMenuBar2=newjavax.swing.JMenuBar();jMenu3=newjavax.swing.JMenu();jMenu4=newjavax.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(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){jMenu3ActionPerformed(evt);}});jMenuBar2.add(jMenu3);jMenu4.setText("Edit");jMenuBar2.add(jMenu4);setJMenuBar(jMenuBar2);javax.swing.GroupLayoutlayout=newjavax.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>privatevoidjMenu3ActionPerformed(java.awt.event.ActionEventevt){jEditorPane1.setOpaque(true);jEditorPane1.setBackground(Color.GRAY);}// Variables declaration - do not modifyprivatejavax.swing.JEditorPanejEditorPane1;privatejavax.swing.JMenujMenu1;privatejavax.swing.JMenujMenu2;privatejavax.swing.JMenujMenu3;privatejavax.swing.JMenujMenu4;privatejavax.swing.JMenuBarjMenuBar1;privatejavax.swing.JMenuBarjMenuBar2;privatejavax.swing.JScrollPanejScrollPane1;// 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:
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!