Eventos de Item e getInsets

1 resposta
WashingtonBotelho

Olá galera, estou seguindo o livro Java 21 Days 4 Ed. e ao chegar na parte de Eventos, me deparei com um exemplo de código que não funciona, pois o Método itemStateChanged não esta sobrescrevendo e também uma dúvida com getInsets que não consegui usa-lo e ver as alterações na prática.

package wbs;
import java.awt.*; // Layout;
import javax.swing.*; // Janela;
import java.awt.event.*; // Evento;

public class ItemEvent extends JFrame implements ItemListener {
  String[] itens = {"(Escolha)", "Texto 1", "Texto 2", "Texto 3"};
  String[] desc =  {"Descrição 1", "Descrição 2", "Descrição 3"};
  JComboBox box = new JComboBox();
  JLabel descL = new JLabel("");
  
  public ItemEvent() {
    super(".:: Focus Item ::.");
    setSize(100, 400);
    setLayout(new BorderLayout());
    
    for(int i = 0; i < itens.length; i++)
      box.addItem(desc[i]);
    
    box.addItemListener(this);
    
    add(BorderLayout.NORTH, box);
    add(BorderLayout.CENTER, descL);
    setVisible(true);
  }

  public void itemStateChanged(ItemEvent e) {
    int escolha = box.getSelectedIndex();
    if(escolha > 0)
      descL.setText(desc[escolha - 1]);
  }

  public Insets getIsents() {
    return new Insets(50, 10, 10, 10);
  }
  
  public static void main(String[] args) {
    new ItemEvent();
  }
}

Se alguém puder me explanar o getIsents também, pois ao desenhar uma interface na mão não consegui dar os espaços entre os TextField, e acho que é eu que estou usando errado o getIsents. Abraço..

1 Resposta

WashingtonBotelho

Bem galera, apesar de ninguém ter me respondido eu descobri o motivo.
Este era que eu teria de colocar todo o caminho do ItemEvent (java.awt.event.ItemEvent).

public void itemStateChanged(java.awt.event.ItemEvent e) {
      int escolha = box.getSelectedIndex();
      descL.setText(desc[escolha]);
    }

Se eu tirar o caminho ele pede pra mim importa a classe, mas depois fala que eu não sobrescrevi o método.
Eu não entendi o porquê disto, já que eu tinha importado a classe não teria de escrever todo o caminho, mas de boa.

Segue o código final que eu queria, que somente precisava de deixar a descrição um pouco mais perto do DropDown:

package wbs;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ItemEvent extends JFrame {
  public ItemEvent() {
    super(".:: Focus Item ::.");
    setSize(450, 200);
    add(new DropPane());
    setVisible(true);
  }
  
  public static void main(String[] args) {
    new ItemEvent();
  }
  
  class DropPane extends JPanel implements ItemListener {
    String[] itens = {"Escolha uma opção:", "P5K3", "Q6600", "2GB DDR3"};
    String[] desc =  {"", "P5K3 Deluxe", "Q6600 SLARC G0", "Kingston 2GB DDR3-1066MHz"};
    JComboBox box = new JComboBox();
    JLabel descL = new JLabel("");
    
    public DropPane() {
      setLayout(new BorderLayout());
      for(int i = 0; i < itens.length; i++)
        box.addItem(itens[i]);
      
      box.addItemListener(this);
      
      add(BorderLayout.NORTH, box);
      add(BorderLayout.CENTER, descL);
    }
    
    public void itemStateChanged(java.awt.event.ItemEvent e) {
      int escolha = box.getSelectedIndex();
      descL.setText(desc[escolha]);
    }
    
    public Insets getInsets() {
      return new Insets(5, 5, 0, 5);
    }
  }
}

Valeu..

Criado 17 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 1
Participantes 1