Boa noite galera, sou novo por aqui e fiquei em dúvida se abria o tópico em Java Básico ou aqui mesmo.
Tenho um programinha bem simples, que adiciona uma nova linha no JComboBox, e um botão Apagar que limpa o mesmo JComboBox.
O que acontece é que depois que criei o evento que trata o botão apagar, ele aparece vários erros e por fim, não limpa a Combo.
Segue abaixo o código:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Principal extends JFrame implements ActionListener{
public static void main(String[] args) {
// TODO Auto-generated method stub
Principal JFE = new Principal();
JFE.setSize(400, 150);
JFE.setVisible(true);
JFE.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
String novo;
String[] lista = new String[]{"Clique em Adicionar para inserir um novo item..."};
JComboBox combo1 = new JComboBox(lista);
public Principal(){
super("Lab5");
BorderLayout l1 = new BorderLayout();
setLayout(l1);
JMenuBar bar = new JMenuBar();
this.setJMenuBar(bar);
JMenu m1 = new JMenu("Adicionar");
bar.add(m1);
JMenu m2 = new JMenu("Sair");
bar.add(m2);
JMenuItem it1 = new JMenuItem("Novo");
it1.addActionListener(this);
m1.add(it1);
JMenuItem it3 = new JMenuItem("Sair");
it3.addActionListener(this);
m2.add(it3);
JPanel jp1 = new JPanel();
add(jp1);
GridLayout l2 = new GridLayout(3,1,10,10);
jp1.setLayout(l2);
JLabel label1 = new JLabel("Adicione elementos:");
jp1.add(label1);
label1.setHorizontalAlignment(JLabel.CENTER);
jp1.add(combo1);
JButton botaoadd = new JButton("Apagar");
jp1.add(botaoadd);
botaoadd.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
JMenuItem menuItem = (JMenuItem)e.getSource();
if (menuItem.getText()=="Novo"){
novo = JOptionPane.showInputDialog("Digite uma nova opção:");
combo1.addItem(novo);
}
if (menuItem.getText()=="Sair"){
System.exit(EXIT_ON_CLOSE);
}
JButton botao = (JButton)e.getSource();
if (botao.getText()=="Apagar"){
combo1.removeAllItems();
}
}
}
Acho que o erro é na comparação das Strings.
Acho q poderia fazer assim também:
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(botaoadd)){
combo1.removeAllItems();
}
}
[quote=silasyudi]Acho que o erro é na comparação das Strings.
Acho q poderia fazer assim também:
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(botaoadd)){
combo1.removeAllItems();
}
}
[/quote]
Boa noite, os erros continuam os mesmos com qualquer uma das 2 opções, porém notei q eles começam quando dou ok na ImputDialog.
Segue abaixo as mensagens do console:
[color=red]Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JMenuItem cannot be cast to javax.swing.JButton
at Principal.actionPerformed(Principal.java:73)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)[/color]
Este CAST é inválido, Faça um action para cada botão.
Este CAST é inválido, Faça um action para cada botão.
[quote=JuniorMaia]
Este CAST é inválido, Faça um action para cada botão.[/quote]
Resolvido! Muito obrigado à todos! Segue abaixo o código:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Principal extends JFrame implements ActionListener{
public static void main(String[] args) {
// TODO Auto-generated method stub
Principal JFE = new Principal();
JFE.setSize(400, 150);
JFE.setVisible(true);
JFE.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
String novo;
String[] lista = new String[]{"Clique em Adicionar para inserir um novo item..."};
JComboBox combo1 = new JComboBox(lista);
public Principal(){
super("Lab5");
BorderLayout l1 = new BorderLayout();
setLayout(l1);
JMenuBar bar = new JMenuBar();
this.setJMenuBar(bar);
JMenu m1 = new JMenu("Adicionar");
bar.add(m1);
JMenu m2 = new JMenu("Sair");
bar.add(m2);
JMenuItem it1 = new JMenuItem("Novo");
ActionListener al1 = new ActionListener() {
public void actionPerformed(ActionEvent e) {
novo = JOptionPane.showInputDialog("Digite uma nova opção:");
combo1.addItem(novo);
}
};
it1.addActionListener(al1);
m1.add(it1);
JMenuItem it3 = new JMenuItem("Sair");
ActionListener al2 = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(EXIT_ON_CLOSE);
}
};
it3.addActionListener(al2);
m2.add(it3);
JPanel jp1 = new JPanel();
add(jp1);
GridLayout l2 = new GridLayout(3,1,10,10);
jp1.setLayout(l2);
JLabel label1 = new JLabel("Adicione elementos:");
jp1.add(label1);
label1.setHorizontalAlignment(JLabel.CENTER);
jp1.add(combo1);
JButton botaoadd = new JButton("Apagar");
ActionListener al3 = new ActionListener() {
public void actionPerformed(ActionEvent e) {
combo1.removeAllItems();
}
};
botaoadd.addActionListener(al3);
jp1.add(botaoadd);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
1 curtida