Ajuda urgente

12 respostas
J

oi pessaoal do pj, criei uma aplicação k permite criar tabelas dinamicamente, so k em cada celula da minha tabela apareça um jcombobox com imagens para o usuario escolher,eu consigo ver a jcombobox na minha tabela so k ela ñ mostra as imagens,alguem sabe kal é o problema aki fica o meu código:

este codigo esta na minha classe principal e permite a criação da combobox, e aplica esta combobox na tabela

CaixaCombinacao combobox = new CaixaCombinacao();
DefaultCellEditor editor = new DefaultCellEditor(combobox);
tabelatarefa.setDefaultEditor(Object.class, editor);

a classe CaixaCombinacao é a seguinte:

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

public class CaixaCombinacao extends JComboBox{
	ImageIcon[] images;
    String[] linguagens = {"x", "check"};
	JComboBox lista;
	
	
public JComboBox CaixaCombinacao(){
	images = new ImageIcon[linguagens.length];
    Integer[] intArray = new Integer[linguagens.length];
    for (int i = 0; i < linguagens.length; i++) {
    	intArray[i] = new Integer(i);
        images[i] = createImageIcon(linguagens[i] + ".gif");
    }
	lista = new JComboBox(images);
	lista.setMaximumRowCount(2);
	ComboBoxRenderer renderer= new ComboBoxRenderer();
	lista.setRenderer(renderer);
	return this;
		
}
protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = CaixaCombinacao.class.getResource(path);
        System.out.println(imgURL);
        return new ImageIcon(imgURL);
        
         
}
class ComboBoxRenderer extends JLabel
                           implements ListCellRenderer {
	

        public ComboBoxRenderer() {
            setOpaque(false);
            setHorizontalAlignment(CENTER);
            setVerticalAlignment(CENTER);
        }

    
        public Component getListCellRendererComponent(
                                           JList list,
                                           Object value,
                                           int index,
                                           boolean isSelected,
                                           boolean cellHasFocus) {
            //Get the selected index. (The index param isn't
            //always valid, so just use the value.)
            int selectedIndex = ((Integer)value).intValue();

            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
			ImageIcon icon = images[selectedIndex];
            System.out.println(icon);
            String pet = linguagens[selectedIndex];
            setIcon(icon);
            return this;
        }
}
}

12 Respostas

B

Olá, vc tem que mexer no render… dá uma olhada aqui

J

ñ tou conseguindo perceber o k tenho k mudar???

B

Olá, me corrija se eu estiver errado, mas vc crio uma classe que estende JComboBox, ai dentro desta classe se tem um JComboBox, na instanciação vc instanceia e configura o membro da sua classe... mas no retorno vc retorna a sua classe????

"jmiguelrfreitas":
CaixaCombinacao combobox = new CaixaCombinacao();
DefaultCellEditor editor = new DefaultCellEditor(combobox);
tabelatarefa.setDefaultEditor(Object.class, editor);
a classe CaixaCombinacao é a seguinte:
public class CaixaCombinacao extends JComboBox{
	ImageIcon[] images;
    String[] linguagens = {"x", "check"};
	JComboBox lista;
	
	
public JComboBox CaixaCombinacao(){
	images = new ImageIcon[linguagens.length];
    Integer[] intArray = new Integer[linguagens.length];
    for (int i = 0; i < linguagens.length; i++) {
    	intArray[i] = new Integer(i);
        images[i] = createImageIcon(linguagens[i] + ".gif");
    }
	lista = new JComboBox(images);
	lista.setMaximumRowCount(2);
	ComboBoxRenderer renderer= new ComboBoxRenderer();
	lista.setRenderer(renderer);
	return this;
		
}
...

Eu aconseharia a fazer o seguinte, na sua classe vc estigue e membro "lista", e tudo que vc faz com ela, faça com o this. Entendeu?

Outra.. no construtor vc não precisa colocar tipo de retorno.. só "public CaixaCombinacao()" e não precisa de return..

J

ñ funcionou, da um erro muito estranho.

Tou mesmo muito aflito ALGUEM ME AJUDE!!!

B

Que erro que deu??? posta pra gente ver.. vê se teu codigo ficou assim:

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

public class CaixaCombinacao extends JComboBox{
   ImageIcon[] images;
    String[] linguagens = {"x", "check"};
   
public CaixaCombinacao(){
    images = new ImageIcon[linguagens.length];
    Integer[] intArray = new Integer[linguagens.length];
    for (int i = 0; i < linguagens.length; i++) {
       intArray[i] = new Integer(i);
        images[i] = createImageIcon(linguagens[i] + ".gif");
        this.addItem(images[i]);
   }
   this.setMaximumRowCount(2);
   ComboBoxRenderer renderer= new ComboBoxRenderer();
   this.setRenderer(renderer);
}
protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = CaixaCombinacao.class.getResource(path);
        System.out.println(imgURL);
        return new ImageIcon(imgURL);
}
class ComboBoxRenderer extends JLabel
                           implements ListCellRenderer {
   

        public ComboBoxRenderer() {
            setOpaque(false);
            setHorizontalAlignment(CENTER);
            setVerticalAlignment(CENTER);
        }

   
        public Component getListCellRendererComponent(
                                           JList list,
                                           Object value,
                                           int index,
                                           boolean isSelected,
                                           boolean cellHasFocus) {
            //Get the selected index. (The index param isn't
            //always valid, so just use the value.)
            int selectedIndex = ((Integer)value).intValue();

            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }
         ImageIcon icon = images[selectedIndex];
            System.out.println(icon);
            String pet = linguagens[selectedIndex];
            setIcon(icon);
            return this;
        }
}
}
J

esse erro acontece kando tento ver o k ta na combobox:

file:/C:/Documents%20and%20Settings/MiguelFreitas/Desktop/poseidon(2)/poseidontabelasjuntas/x.gif
file:/C:/Documents%20and%20Settings/MiguelFreitas/Desktop/poseidon(2)/poseidontabelasjuntas/check.gif

tarOK_actionPerformed(ActionEvent e) called.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.ImageIcon at CaixaCombinacao$ComboBoxRenderer.getListCellRendererComponent(CaixaCombinacao.java:45)
        at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1148)
        at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1098)
        at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.java:2219)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:187)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:214)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:408)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:417)
        at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(Def
aultListSelectionModel.java:510)
        at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:422)
        at javax.swing.JList.clearSelection(JList.java:1578)
        at javax.swing.plaf.basic.BasicComboPopup.setListSelection(BasicComboPopup.java:1110)
        at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:188)

        at javax.swing.plaf.basic.BasicComboPopup.togglePopup(BasicComboPopup.java:1097)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.mousePressed(BasicComboPopup.java:802)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:222)
        at java.awt.Component.processMouseEvent(Component.java:5485)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
        at java.awt.Component.processEvent(Component.java:5253)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(BasicTableUI.java:868)
        at javax.swing.plaf.basic.BasicTableUI$Handler.adjustFocusAndSelection(B
asicTableUI.java:924)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:889)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:222)
        at java.awt.Component.processMouseEvent(Component.java:5485)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
        at java.awt.Component.processEvent(Component.java:5253)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3889)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
        at java.awt.Window.dispatchEventImpl(Window.java:1766)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at CaixaCombinacao$ComboBoxRenderer.getListCellRendererComponent(CaixaCombinacao.java:45)
        at javax.swing.plaf.basic.BasicComboBoxUI.paintCurrentValue(BasicComboBoxUI.java:1052)
        at javax.swing.plaf.metal.MetalComboBoxUI.paintCurrentValue(MetalComboBoxUI.java:66)
        at javax.swing.plaf.basic.BasicComboBoxUI.paint(BasicComboBoxUI.java:850)
        at javax.swing.plaf.metal.MetalComboBoxUI.paint(MetalComboBoxUI.java:45)

        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
        at javax.swing.JComponent.paintComponent(JComponent.java:740)
        at javax.swing.JComponent.paint(JComponent.java:1003)
        at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4930)

        at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4883)
        at javax.swing.JComponent._paintImmediately(JComponent.java:4826)
        at javax.swing.JComponent.paintImmediately(JComponent.java:4633)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451)

        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
B

Este erro é que vc tá tentando fazer um Cast onde não dá… vê na linha 45, que linha que é… é possivel deste erro:

int selectedIndex = ((Integer)value).intValue();

o value pode estar como uma String… ou

setIcon(icon);

apesar que neste ultimo o comum é dar nullPointer… mas dá um aolhada aê, coloca um System.out antes do primerio…

J

eu axo k ñ consegui perceber muito bem o k voce ker dizer, mas ja consegui ver k o erro é realmente em:

int selectedIndex = ((Integer)value).intValue();

mas ñ tou vendo como posso resolver, eu ja fiz um “System.out…”, mas ñ mostra nada…

J

se voce kiser e puder eu posso passar todo o meu codigo pra voce caso voce keira dar uma olhada

B

Olá, faz seguinte… ao inves de vc fazer isto:

int selectedIndex = ((Integer)value).intValue();

faça isto:

int selectedIndex = index;

se não der certo, post o codigo… mas o System.out antes desta linha não printa nada!!!

J

ja fiz o k voce diz, agora ja vejo as imagens mas kando tento escolher da este erro:
[/code]
file:/C:/Documents%20and%20Settings/MiguelFreitas/Desktop/x.gif
file:/C:/Documents%20and%20Settings/MiguelFreitas/Desktop/check.gif

tarOK_actionPerformed(ActionEvent e) called.

[Ljavax.swing.ImageIcon;@47a0d4

[Ljavax.swing.ImageIcon;@47a0d4

[Ljavax.swing.ImageIcon;@47a0d4

[Ljavax.swing.ImageIcon;@47a0d4

[Ljavax.swing.ImageIcon;@47a0d4

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException:

-1

at CaixaCombinacao$ComboBoxRenderer.getListCellRendererComponent(CaixaCombinacao.java:57)

at javax.swing.plaf.basic.BasicComboBoxUI.paintCurrentValue(BasicComboBoxUI.java:1059)

at javax.swing.plaf.metal.MetalComboBoxUI.paintCurrentValue(MetalComboBoxUI.java:66)

at javax.swing.plaf.basic.BasicComboBoxUI.paint(BasicComboBoxUI.java:850)[Ljavax.swing.ImageIcon;@47a0d4
at javax.swing.plaf.metal.MetalComboBoxUI.paint(MetalComboBoxUI.java:45)

    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
    at javax.swing.JComponent.paintComponent(JComponent.java:740)
    at javax.swing.JComponent.paint(JComponent.java:1003)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JViewport.paint(JViewport.java:728)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:559)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4930)

    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4883)
    at javax.swing.JComponent._paintImmediately(JComponent.java:4826)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4633)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451)

    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException:

-1

at CaixaCombinacao$ComboBoxRenderer.getListCellRendererComponent(CaixaCombinacao.java:57)

at javax.swing.plaf.basic.BasicComboBoxUI.paintCurrentValue(BasicComboBoxUI.java:1059)

at javax.swing.plaf.metal.MetalComboBoxUI.paintCurrentValue(MetalComboBoxUI.java:66)

at javax.swing.plaf.basic.BasicComboBoxUI.paint(BasicComboBoxUI.java:850)

at javax.swing.plaf.metal.MetalComboBoxUI.paint(MetalComboBoxUI.java:45)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
    at javax.swing.JComponent.paintComponent(JComponent.java:740)
    at javax.swing.JComponent.paint(JComponent.java:1003)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4930)

    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4883)
    at javax.swing.JComponent._paintImmediately(JComponent.java:4826)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4633)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451)

    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
[Ljavax.swing.ImageIcon;@47a0d4

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException:

-1

at CaixaCombinacao$ComboBoxRenderer.getListCellRendererComponent(CaixaCombinacao.java:57)

at javax.swing.plaf.basic.BasicComboBoxUI.paintCurrentValue(BasicComboBoxUI.java:1052)

at javax.swing.plaf.metal.MetalComboBoxUI.paintCurrentValue(MetalComboBoxUI.java:66)

at javax.swing.plaf.basic.BasicComboBoxUI.paint(BasicComboBoxUI.java:850

)

at javax.swing.plaf.metal.MetalComboBoxUI.paint(MetalComboBoxUI.java:45)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
    at javax.swing.JComponent.paintComponent(JComponent.java:740)
    at javax.swing.JComponent.paint(JComponent.java:1003)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JViewport.paint(JViewport.java:728)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:559)
    at javax.swing.JComponent.paintChildren(JComponent.java:840)
    at javax.swing.JComponent.paint(JComponent.java:1012)
    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4930)

    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4883)
    at javax.swing.JComponent._paintImmediately(JComponent.java:4826)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4633)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451)

    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

J

a minha classe principal é essa:

/****************************************************************/
/*                      Poseidon	                            */
/*                                                              */
/****************************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
/**
 * Summary description for Poseidon
 *2052102
 */
public class Poseidon extends JFrame
{
	// Variables declaration
	private JTabbedPane jTabbedPane1;
	//-----
	private JPanel contentPane, paineltabela, painelgrafo, painelvariavel, paineltarefa;
	//-----
	private JTable tabelavariavel,tabelatarefa, tabelateste;
	//-----
	private JScrollPane scrollvariavel, scrolltarefa;
	//-----
	private int totallinhas, alt, al, linhastarefa,cont, linhas, tamanholinhas, 
				controlalinhas, index, contastring;
	//-----
	private String variavel;
	//-----
	private JComboBox combobox;
	//-----
	JMenuItem sair, abrir, guardar, miadtarefa, miadvariavel;
	//-----
	JTable [] tabelasvar = new JTable[30];
	
	//-----
	JFrame w;
	//-----

	
	// End of variables declaration


	public Poseidon()
	{
		super("Poseidon");
		initializeComponent();
		this.setVisible(true);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always regenerated
	 * by the Windows Form Designer. Otherwise, retrieving design might not work properly.
	 * Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
	 * to retrieve your design properly in future, before revising this method.
	 */
	private void initializeComponent()
	{
		
		JMenuBar barra = new JMenuBar();
		setJMenuBar(barra);
		
		TratBarra trat = new TratBarra();
		tabelavariavel = new JTable();
		tabelatarefa = new JTable();
		
		tabelavariavel.getTableHeader().setReorderingAllowed(false);
		tabelavariavel.setModel(new DefaultTableModel());
		tabelavariavel.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
		
		tabelavariavel.setBackground(Color.cyan);
		
		tabelatarefa.getTableHeader().setReorderingAllowed(false);
		tabelatarefa.setModel(new DefaultTableModel());
		tabelatarefa.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		tabelatarefa.setBackground(Color.white);
		
		CaixaCombinacao combobox = new CaixaCombinacao(); 
		DefaultCellEditor editor = new DefaultCellEditor(combobox); 
		tabelatarefa.setDefaultEditor(Object.class, editor); 
		
		painelvariavel = new JPanel();
		painelvariavel.setLayout(new GridLayout(1, 0));
		painelvariavel.setBorder(new TitledBorder("Variaveis"));
		painelvariavel.setBounds(15, 35, 490, 650);
		painelvariavel.setVisible(false);
		this.add(painelvariavel);
		scrollvariavel = new JScrollPane();
		scrollvariavel.setViewportView(tabelavariavel);
		painelvariavel.add(scrollvariavel);
		
		paineltarefa = new JPanel();
		paineltarefa.setLayout(new GridLayout(1,0));
		paineltarefa.setBorder(new TitledBorder("Tarefas"));
		paineltarefa.setBounds(506, 35, 490,650);
		paineltarefa.setVisible(false);
		this.add(paineltarefa);
		scrolltarefa = new JScrollPane();
		scrolltarefa.setViewportView(tabelatarefa);
		paineltarefa.add(scrolltarefa);
		
		tamanholinhas = 1;
		linhas=1;
		cont=0;
		
		JMenu arquivo = new JMenu("Arquivo");
		JMenu mtabela = new JMenu("Tabela");
		
		arquivo.setMnemonic(KeyEvent.VK_A);
		mtabela.setMnemonic(KeyEvent.VK_T);
		miadvariavel = new JMenuItem("Adicionar Variavel");
		miadtarefa = new JMenuItem("Adicionar Tarefa");
		abrir = new JMenuItem("Abrir");
		guardar = new JMenuItem("Guardar");
		sair = new JMenuItem("Sair");
		sair.addActionListener(trat);
		miadvariavel.addActionListener(trat);
		miadtarefa.addActionListener(trat);
		
		
		mtabela.add(miadvariavel);
		miadvariavel.setMnemonic(KeyEvent.VK_V);
		mtabela.add(miadtarefa);
		miadtarefa.setMnemonic(KeyEvent.VK_F);
		
		arquivo.add(abrir);
		abrir.setMnemonic(KeyEvent.VK_B);
		arquivo.add(guardar);
		guardar.setMnemonic(KeyEvent.VK_G);
		arquivo.addSeparator();
		arquivo.add(sair);
		sair.setMnemonic(KeyEvent.VK_S);
		barra.add(arquivo);
		barra.add(mtabela);
		
		jTabbedPane1 = new JTabbedPane();
		contentPane = (JPanel)this.getContentPane();
		//-----
		paineltabela = new JPanel();
		//-----
		painelgrafo = new JPanel();
		//-----

		//
		// jTabbedPane1
		//
		jTabbedPane1.addTab("Tabela", paineltabela);
		jTabbedPane1.addTab("Grafo", painelgrafo);
		jTabbedPane1.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e)
			{
				painelvariavel.setVisible(false);
			}

		});
		//
		// contentPane
		//
		contentPane.setLayout(null);
		
		addComponent(contentPane, jTabbedPane1, 11,10,990,690);
		//
		// paineltabela
		//
		paineltabela.setLayout(null);
		//
		// painelgrafo
		//
		painelgrafo.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		//
		// Poseidon
		//
		this.setTitle("UMa Poseidon");
		this.setLocation(new Point(2, 1));
		this.setSize(new Dimension(558, 441));
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		this.setExtendedState(MAXIMIZED_BOTH);
		
	}

	/** Add Component Without a Layout Manager (Absolute Positioning) */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
	{
		c.setBounds(x,y,width,height);
		container.add(c);
	}

	//
	// TODO: Add any appropriate code in the following Event Handling Methods
	//
	private void jTabbedPane1_stateChanged(ChangeEvent e)
	{
		System.out.println("\njTabbedPane1_stateChanged(ChangeEvent e) called.");
		// TODO: Add any handling code here

	}

	//
	// TODO: Add any method code to meet your needs in the following area
	//
	
	private class TratBarra implements ActionListener{
		public void actionPerformed(ActionEvent e){
			if(e.getSource() == sair){
				int op = JOptionPane.showConfirmDialog(null, "Deseja mesmo fechar o aplicativo?","Sair", JOptionPane.YES_NO_OPTION);
				if(op == JOptionPane.YES_OPTION){
					System.exit(0);
					} 
				}
			if(e.getSource() == miadvariavel){
				final JFrame w = new JFrame();
				new AdVariavel(w);
				}
			if(e.getSource() == miadtarefa){
				final JFrame w = new JFrame();
				new AdTarefa(w);
			}
			}
		}

//============================= Testing ================================//
//=                                                                    =//
//= The following main method is just for testing this class you built.=//
//= After testing,you may simply delete it.                            =//
//======================================================================//
	public static void main(String[] args)
	{
		Spash sp = new Spash(3000);
		sp.mostraTela();
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);
		try
		{
			UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
		}
		catch (Exception ex)
		{
			System.out.println("Failed loading L&F: ");
			System.out.println(ex);
		}
		new Poseidon();
	}
//= End of Testing =

private class AdVariavel extends JDialog
{
	// Variables declaration
	private JLabel jLabel1;
	private JTextField jTextField1;
	private JButton varOK;
	private JButton varCancel;
	private JPanel contentPane;
	//-----
	private JTextField jTextField2;
	private JList listadominio;
	private JScrollPane jScrollPane1;
	private JButton varAdiciona;
	private JButton varRemove;
	private JPanel jPanel1;
	private DefaultListModel modelo1;
	//-----
	// End of variables declaration


	public AdVariavel(Frame w)
	{
		super(w);
		initializeComponent();
		//
		// TODO: Add any constructor code after initializeComponent call
		//
		this.setVisible(true);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always regenerated
	 * by the Windows Form Designer. Otherwise, retrieving design might not work properly.
	 * Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
	 * to retrieve your design properly in future, before revising this method.
	 */
	private void initializeComponent()
	{
		modelo1 = new DefaultListModel();
		jLabel1 = new JLabel();
		jTextField1 = new JTextField();
		varOK = new JButton();
		varCancel = new JButton();
		contentPane = (JPanel)this.getContentPane();
		//-----
		jTextField2 = new JTextField();
		listadominio = new JList(modelo1);
		jScrollPane1 = new JScrollPane();
		varAdiciona = new JButton();
		varRemove = new JButton();
		jPanel1 = new JPanel();
		//-----
		//
		// jLabel1
		//
		jLabel1.setText("Nome da variável:");
		//
		// jTextField1
		//
		jTextField1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField1_actionPerformed(e);
			}

		});
		//
		// varOK
		//
		varOK.setText("OK");
		varOK.setMnemonic(KeyEvent.VK_O);
		varOK.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				varOK_actionPerformed(e);
			}

		});
		//
		// varCancel
		//
		varCancel.setText("Cancelar");
		varCancel.setMnemonic(KeyEvent.VK_C);
		varCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				varCancel_actionPerformed(e);
			}

		});
		//
		// contentPane
		//
		contentPane.setLayout(null);
		addComponent(contentPane, jLabel1, 12,12,105,18);
		addComponent(contentPane, jTextField1, 118,10,137,22);
		addComponent(contentPane, varOK, 170,227,83,28);
		addComponent(contentPane, varCancel, 257,227,85,28);
		addComponent(contentPane, jPanel1, 12,42,332,180);
		//
		// jTextField2
		//
		jTextField2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField2_actionPerformed(e);
			}

		});
		//
		// listadominio
		//
		listadominio.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e)
			{
				listadominio_valueChanged(e);
			}

		});
		//
		// jScrollPane1
		//
		jScrollPane1.setViewportView(listadominio);
		//
		// varAdiciona
		//
		varAdiciona.setText("Adicionar");
		varAdiciona.setMnemonic(KeyEvent.VK_A);
		varAdiciona.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				varAdiciona_actionPerformed(e);
			}

		});
		//
		// varRemove
		//
		varRemove.setText("Remover");
		varRemove.setMnemonic(KeyEvent.VK_R);
		varRemove.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				varRemove_actionPerformed(e);
			}

		});
		//
		// jPanel1
		//
		jPanel1.setLayout(null);
		jPanel1.setBorder(new TitledBorder("Dominio:"));
		addComponent(jPanel1, jTextField2, 17,22,130,22);
		addComponent(jPanel1, jScrollPane1, 165,21,154,144);
		addComponent(jPanel1, varAdiciona, 56,50,89,28);
		addComponent(jPanel1, varRemove, 57,84,88,28);
		//
		// AdTarefas
		//
		this.setTitle("Adicionar Variavel");
		this.setLocation(new Point(1, 0));
		this.setSize(new Dimension(367, 296));
		this.setLocationRelativeTo(null);
		this.setResizable(false);
	}

	/** Add Component Without a Layout Manager (Absolute Positioning) */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
	{
		c.setBounds(x,y,width,height);
		container.add(c);
	}

	//
	// TODO: Add any appropriate code in the following Event Handling Methods
	//
	private void jTextField1_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField1_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

	private void varOK_actionPerformed(ActionEvent e)
	{
		System.out.println("\nvarOK_actionPerformed(ActionEvent e) called.");
		if (jTextField1 == null){
			return;
		}
		if (jTextField1.getText().length()<1){
			JOptionPane.showMessageDialog(null,"Não introduziu nenhuma variavel","AVISO", 1 );
			jTextField1.requestFocus();
			return;
		}
		else {
			if (modelo1.getSize() == 0){
				JOptionPane.showMessageDialog(null,"Não introduziu nenhum dominio","AVISO", 1 );
				return;
				}
			else{
				painelvariavel.add(scrollvariavel);
				index = 0;
				variavel = jTextField1.getText();
				contastring = variavel.length();
				System.out.println(contastring);
				DefaultTableModel dtm = (DefaultTableModel)tabelavariavel.getModel();
				tabelavariavel.getTableHeader().setBackground(Color.yellow);
				dtm.addColumn(variavel, new Object[]{});
				
				

				
				al = modelo1.getSize();
				totallinhas = al;
				for(int i = 0;i < modelo1.getSize();i++){
					listadominio.setSelectedIndex(index) ;
					Object dominio = listadominio.getSelectedValue();
					dtm.addRow(new Object[]{dominio});
					index ++;
				}
				tabelasvar[cont] = tabelavariavel;
				cont++;
				System.out.println(cont);
				
				for(int i=0;i<cont;i++){
					tabelateste = tabelasvar[i];
					linhas = tabelateste.getRowCount();
					if (linhas >= tamanholinhas){
						tamanholinhas = linhas;
					}
				}
				
				for (int i=0;i<cont;i++){
					tabelateste = tabelasvar[i];
					System.out.println(linhas);
					linhas = tabelateste.getRowCount();
					tabelateste.setRowHeight((tamanholinhas/linhas)*20);
					tabelasvar[i] = tabelateste;
					System.out.println(tabelateste);
				}
				
			}
			tabelavariavel = new JTable();
    		scrollvariavel = new JScrollPane();
    		painelvariavel.add(tabelavariavel);
    		tabelavariavel.setBackground(Color.cyan);
        	tabelavariavel.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
			scrollvariavel.setViewportView(tabelavariavel);
			painelvariavel.setVisible(true);
        	tabelavariavel.getTableHeader().setReorderingAllowed(false);
        	this.setVisible(false);
        	miadtarefa.setEnabled(true);
        	miadvariavel.setEnabled(true);
        	
        	
        	DefaultTableModel dtm = (DefaultTableModel)tabelatarefa.getModel();
			tabelatarefa.getTableHeader().setBackground(Color.yellow);
			
			controlalinhas = tamanholinhas - linhastarefa;
			for(int i = 0;i < controlalinhas;i++){
					dtm.addRow(new Object[]{});
					linhastarefa++;
			}
			tabelatarefa.setRowHeight((tamanholinhas/linhas)*20);
		}
		// TODO: Add any handling code here

	}

	private void varCancel_actionPerformed(ActionEvent e)
	{
		System.out.println("\nvarCancel_actionPerformed(ActionEvent e) called.");
		this.setVisible(false);

	}

	private void jTextField2_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField2_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

	private void listadominio_valueChanged(ListSelectionEvent e)
	{
		System.out.println("\nlistadominio_valueChanged(ListSelectionEvent e) called.");
		if(!e.getValueIsAdjusting())
		{
			Object o = listadominio.getSelectedValue();
			System.out.println(">>" + ((o==null)? "null" : o.toString()) + " is selected.");
			// TODO: Add any handling code here for the particular object being selected
			
		}
	}

	private void varAdiciona_actionPerformed(ActionEvent e)
	{
		System.out.println("\nvarAdiciona_actionPerformed(ActionEvent e) called.");
		if(jTextField2.getText().length()>=1){
			modelo1.addElement(jTextField2.getText());
			jTextField2.setText("");
			jTextField2.requestFocus();
			}
	}

	private void varRemove_actionPerformed(ActionEvent e)
	{
		System.out.println("\nvarRemove_actionPerformed(ActionEvent e) called.");
		int index = listadominio.getSelectedIndex();
		modelo1.remove(index);
	}

	//
	// TODO: Add any method code to meet your needs in the following area
	//
}
private class AdTarefa extends JDialog
{
	// Variables declaration
	private JLabel jLabel1;
	private JTextField jTextField1;
	private JButton tarOK;
	private JButton tarCancel;
	private JPanel contentPane;
	//-----
	

	private JPanel jPanel1;
	
	//-----
	// End of variables declaration


	public AdTarefa(Frame w)
	{
		super(w);
		initializeComponent();
		//
		// TODO: Add any constructor code after initializeComponent call
		//

		this.setVisible(true);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always regenerated
	 * by the Windows Form Designer. Otherwise, retrieving design might not work properly.
	 * Tip: If you must revise this method, please backup this GUI file for JFrameBuilder
	 * to retrieve your design properly in future, before revising this method.
	 */
	private void initializeComponent()
	{
		
		jLabel1 = new JLabel();
		jTextField1 = new JTextField();
		tarOK = new JButton();
		tarCancel = new JButton();
		contentPane = (JPanel)this.getContentPane();
	
		
		
		//
		// jLabel1
		//
		jLabel1.setText("Nome da tarefa:");
		//
		// jTextField1
		//
		jTextField1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				jTextField1_actionPerformed(e);
			}

		});
		//
		// tarOK
		//
		tarOK.setText("OK");
		tarOK.setMnemonic(KeyEvent.VK_O);
		tarOK.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				tarOK_actionPerformed(e);
			}
		});
		//
		// tarCancel
		//
		tarCancel.setText("Cancelar");
		tarCancel.setMnemonic(KeyEvent.VK_C);
		tarCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				tarCancel_actionPerformed(e);
			}
		});
		//
		// contentPane
		//
		contentPane.setLayout(null);
		addComponent(contentPane, jLabel1, 12,12,105,18);
		addComponent(contentPane, jTextField1, 118,10,120,22);
		addComponent(contentPane, tarOK, 10,50,83,28);
		addComponent(contentPane, tarCancel, 153,50,85,28);
	
		//
		// AdTarefas
		//
		this.setTitle("Adicionar Tarefa");
		this.setLocation(new Point(1, 0));
		this.setSize(new Dimension(250, 120));
		this.setLocationRelativeTo(null);
		this.setResizable(false);
	}

	/** Add Component Without a Layout Manager (Absolute Positioning) */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
	{
		c.setBounds(x,y,width,height);
		container.add(c);
	}

	//
	// TODO: Add any appropriate code in the following Event Handling Methods
	//
	private void jTextField1_actionPerformed(ActionEvent e)
	{
		System.out.println("\njTextField1_actionPerformed(ActionEvent e) called.");
		// TODO: Add any handling code here

	}

	private void tarOK_actionPerformed(ActionEvent e)
	{
		System.out.println("\ntarOK_actionPerformed(ActionEvent e) called.");
		if (jTextField1 == null){
			return;
		}
		if (jTextField1.getText().length()<1){
			JOptionPane.showMessageDialog(null,"Não introduziu nenhuma tarefa","AVISO", 1 );
			jTextField1.requestFocus();
			return;
		}
		
		
		else{
			String variavel = jTextField1.getText();
			DefaultTableModel dtm = (DefaultTableModel)tabelatarefa.getModel();
			dtm.addColumn(variavel,new Object[]{});
			controlalinhas = tamanholinhas - linhastarefa;
			for(int i = 0;i < controlalinhas;i++){
					dtm.addRow(new Object[]{});
					linhastarefa++;
			}
			for(int i=0; i < tabelatarefa.getColumnCount(); i++){
				tabelatarefa.getColumnModel().getColumn(i).setPreferredWidth(100);
    			tabelatarefa.getColumnModel().getColumn(i).setResizable(false);
    			tabelatarefa.getTableHeader().setBackground(Color.yellow);
    			
    		}
			tabelatarefa.setRowHeight((tamanholinhas/linhas)*20);
		}
			paineltarefa.setVisible(true);
        	tabelatarefa.getTableHeader().setReorderingAllowed(true);
        	this.setVisible(false);
        	miadtarefa.setEnabled(true);
        	miadvariavel.setEnabled(true);
			
        	// TODO: Add any handling code here

	}

	private void tarCancel_actionPerformed(ActionEvent e)
	{
		System.out.println("\ntarCancel_actionPerformed(ActionEvent e) called.");
		this.setVisible(false);

	}
}


}

depois preciso dessa classe k da um splash de entrada:

/*@ Classe de montagem da tela Splash ligada apenas á Classe Agenda(Principal)
 */

//package rosto;
import javax.swing.*;
import java.awt.*;


public class Spash extends JWindow{
	private int duracao;

	public Spash(int d){
	duracao=d;
	}	
	public void mostraSpalsh(){
	JPanel painel=(JPanel)getContentPane();
	int width =260;
    int height=238;
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (screen.width-width)/2;
    int y = (screen.height-height)/2;
    setBounds(x,y,width,height);
	JLabel lbSpash = new JLabel(new ImageIcon("poseidon.jpg"));
	painel.add(lbSpash,BorderLayout.CENTER);
	painel.setBackground(Color.white);
	Color linha = new Color(0,0,0,0);
	painel.setBorder(BorderFactory.createLineBorder(linha,8));
	setVisible(true);
		try{
			Thread.sleep(duracao);
			setVisible(false);
			}
		catch(Exception e){
		JOptionPane.showMessageDialog(null,"Erro"+e.getMessage());	
		}
		}
	public void mostraTela(){
    mostraSpalsh();
    
  }

		
		
}

e tem a class k faz a combobox k é essa:

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

public class CaixaCombinacao extends JComboBox{ 
   ImageIcon[] images; 
    String[] linguagens = {"x", "check"}; 
    
public CaixaCombinacao(){ 
    images = new ImageIcon[linguagens.length]; 
    Integer[] intArray = new Integer[linguagens.length]; 
    for (int i = 0; i < linguagens.length; i++) { 
       intArray[i] = new Integer(i); 
        images[i] = createImageIcon(linguagens[i] + ".gif"); 
        this.addItem(images[i]); 
   } 
   this.setMaximumRowCount(2); 
   ComboBoxRenderer renderer= new ComboBoxRenderer(); 
   this.setRenderer(renderer); 
} 
protected static ImageIcon createImageIcon(String path) { 
        java.net.URL imgURL = CaixaCombinacao.class.getResource(path); 
        System.out.println(imgURL); 
        return new ImageIcon(imgURL); 
} 
class ComboBoxRenderer extends JLabel 
                           implements ListCellRenderer { 
    

        public ComboBoxRenderer() { 
            setOpaque(false); 
            setHorizontalAlignment(CENTER); 
            setVerticalAlignment(CENTER); 
        } 

    
        public Component getListCellRendererComponent( 
                                           JList list, 
                                           Object value, 
                                           int index, 
                                           boolean isSelected, 
                                           boolean cellHasFocus) { 
            //Get the selected index. (The index param isn't 
            //always valid, so just use the value.) 
            System.out.println(images);
            int selectedIndex = index; 

            if (isSelected) { 
                setBackground(list.getSelectionBackground()); 
                setForeground(list.getSelectionForeground()); 
            } else { 
                setBackground(list.getBackground()); 
                setForeground(list.getForeground()); 
            } 
         	
         	
         	ImageIcon icon = images[selectedIndex]; 
            String pet = linguagens[selectedIndex]; 
            setIcon(icon); 
            
            return this; 
        } 
} 
}

amigo peço desculpa se tou sendo massador mas tou mesmo aflito,
agradeço muito a sua ajuda e desculpa postar isso assim,é k o codigo é muito grande, se voce kiser eu posso mandar o codigo bem como todas as imagens pra seu mail…

Criado 4 de abril de 2005
Ultima resposta 4 de abr. de 2005
Respostas 12
Participantes 2