Problemas e dúvidas básicas que farão a diferença

1 resposta
Lokken

Então...
Eu segui o guia do próprio java, e usei seu código pra gerar isto:

[IMG]http://i.imgur.com/fzvAk.png[/IMG]

Guia: http://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html

Bom eu tentei bastante, mas não consegui adicionar um texto embaixo da imagem.
Segue o código: (feito pela Oracle e adaptado)

package Test;
 
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;

//SplitPaneDemo itself is not a visible component.
public class Altarya extends JPanel
                          implements ListSelectionListener {
	
    private JLabel picture;
    private JLabel txt;
    private JList list;
    private JSplitPane splitPane;
    
    
    private String[] imageNames = { "Bird", "Cat", "Dog", "Rabbit", "Pig", "dukeWaveRed",
        "kathyCosmo", "lainesTongue", "left", "middle", "right", "stickerface"};
    
    private String[] imageEX1 = { "texto1", "texto2", "texto3", "texto4", "texto5", "texto6",
	        "texto7", "texto8", "texto9", "texto10", "texto11", "texto12"};

    private String[] imageEX2 = { "texto1", "texto2", "texto3", "texto4", "texto5", "texto6",
	        "texto7", "texto8", "texto9", "texto10", "texto11", "texto12"};

    private String[] imageEX3 = { "texto1", "texto2", "texto3", "texto4", "texto5", "texto6",
	        "texto7", "texto8", "texto9", "texto10", "texto11", "texto12"};

    private String[] imageEX4 = { "texto1", "texto2", "texto3", "texto4", "texto5", "texto6",
	        "texto7", "texto8", "texto9", "texto10", "texto11", "texto12"};
    
    
    public Altarya() {
    	
    	

        //Create the list of images and put it in a scroll pane.
        
//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

/*Como pode ver, aqui a lista já é definida com o array "imageNames"
*Mas teria como muda-la? Por exemplo, criarei um botão para escolher qual array lá em cima 
*usar? Tentei mas teria que mudar várias coisas para static */

//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//PERGUNTA @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        list = new JList(imageNames);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setSelectedIndex(0);
        list.addListSelectionListener(this);
        
        txt = new JLabel();
        txt.setHorizontalAlignment(JLabel.CENTER);
        
       
        JScrollPane listScrollPane = new JScrollPane(list);
        picture = new JLabel();
        picture.setFont(picture.getFont().deriveFont(Font.ITALIC));
        list.setFont(new Font("Book Antiqua", Font.PLAIN, 15));
        picture.setHorizontalAlignment(JLabel.CENTER);
        
        JScrollPane pictureScrollPane = new JScrollPane(picture);

        //Create a split pane with the two scroll panes in it.
        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                   listScrollPane, pictureScrollPane);
        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(150);
        

        //Provide minimum sizes for the two components in the split pane.
        Dimension minimumSize = new Dimension(100, 50);
        listScrollPane.setMinimumSize(minimumSize);
        pictureScrollPane.setMinimumSize(minimumSize);

        //Provide a preferred size for the split pane.
        splitPane.setPreferredSize(new Dimension(400, 200));
        updateLabel(imageNames[list.getSelectedIndex()]);
  
    }
    
    //Listens to the list
    public void valueChanged(ListSelectionEvent e) {
        JList list = (JList)e.getSource();
        updateLabel(imageNames[list.getSelectedIndex()]);
    }
    
    //Renders the selected image
    protected void updateLabel (String name) {
        ImageIcon icon = createImageIcon("images/" + name + ".gif");
        picture.setIcon(icon);
        if  (icon != null) {
            picture.setText(null);
        } else {
            picture.setText("Image not found");
        }
        
        text();
        

    }

    //Used by SplitPaneDemo2
    public JList getImageList() {
        return list;
    }

    public JSplitPane getSplitPane() {
        return splitPane;
    }

   
    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
       java.net.URL imgURL = Altarya.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
    

    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {

        //Create and set up the window.
        JFrame frame = new JFrame("SplitPaneDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Altarya splitPaneDemo = new Altarya();
        frame.getContentPane().add(splitPaneDemo.getSplitPane());
        
        

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
    
    public void text(){
    
    	
    	System.out.println(imageNames[list.getSelectedIndex()]);
    	
    	//JTextArea information = new JTextArea(imageTexts[list.getSelectedIndex()], 10,34);
    	
    	

    	
    }
}

Então..
A pergunta está no próprio codigo, em forma de comentário cercado por "@"

1 Resposta

Marcio_Lima
  1. para adicionar um texto abaixo da imagem:
private JSplitPane splitPane, outroSplit;
// - - - -
        txt = new JLabel("rodapé da imagem");
        txt.setHorizontalAlignment(JLabel.CENTER);
        txt.setMinimumSize(new Dimension(100, 30));    // <<<<<<<<<<<
// - - -
        JScrollPane pictureScrollPane = new JScrollPane(picture);
        //Create a split pane with the two scroll panes in it.
        outroSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                                   pictureScrollPane, txt);
        outroSplit.setOneTouchExpandable(true);
        outroSplit.setDividerLocation(150);
        outroSplit.setBorder(null);
        outroSplit.setPreferredSize(new Dimension(250, 200));

        //Create a split pane with the two scroll panes in it.
        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                                   listScrollPane, outroSplit);
        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(170);
// - - -
  1. para carregar a lista após escolher o array desejado
private String[] imageTAL = { "tx1", "tx2", "tx3", "tx4", "tx5", "tx6",
	        "tx7", "tx8", "tx9", "tx10", "tx11", "tx12"};
// - - -
        list = new JList();    // <<<<<<<<
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setSelectedIndex(0);
        list.addListSelectionListener(this);
// - - -
    public void valueChanged(ListSelectionEvent e) {
        JList list = (JList)e.getSource();
        updateLabel(imageTAL[list.getSelectedIndex()]);     //<<<<<<<<<<
    }
// - - -
    public void text(){
    	System.out.println(imageTAL[list.getSelectedIndex()]);
    	//JTextArea information = new JTextArea(imageTexts[list.getSelectedIndex()], 10,34);
    }
// - - -
  1. após a seleção do array desejado, faça a atribuição, por exemplo:
imageTAL = imageEX3;
  1. e, logo em seguida:
list.setListData(imageTAL);
  1. porém, é necessário repensar o comando abaixo assinalado, pois, em tempo de inicialização, ainda não ocorreu nenhuma seleção:
//Provide minimum sizes for the two components in the split pane.
        Dimension minimumSize = new Dimension(100, 50);
        listScrollPane.setMinimumSize(minimumSize);
        pictureScrollPane.setMinimumSize(minimumSize);

        //Provide a preferred size for the split pane.
        splitPane.setPreferredSize(new Dimension(400, 200));
        // >>>>>>>> updateLabel(imageTAL[list.getSelectedIndex()]);
Criado 1 de julho de 2012
Ultima resposta 2 de jul. de 2012
Respostas 1
Participantes 2