Oppure

Loading
17/10/12 14:41
Sevenjeak
Da questa mattina che sto provando, in java, a definire un tooltip con l'utilizzo del metodo setToolTipText(), del tab selezionato di un JTabbelPane, da quello che ho letto su interno per prendere il tab selezionato si utilizza questa istruzione:

jtabbedpane.getSelectedIndex()


Ma a questo punto non so più che fare, come faccio a settare il tooltip al tab selezionato?

Oltre a questo avrei un'altra domanda da farvi: come faccio a gestire, ad esempio un JTextPane, contenuto nella tab selezionata, so che questo si può fare in vb.net, ma in java come fare?
aaa
18/10/12 7:32
bububs
Ma a questo punto non so più che fare, come faccio a settare il tooltip al tab selezionato?

jtabbedpane.setToolTipTextAt(jtabbedpane.getSelectedIndex(), "Testo che vuoi che appaia") 


Oltre a questo avrei un'altra domanda da farvi: come faccio a gestire, ad esempio un JTextPane, contenuto nella tab selezionata, so che questo si può fare in vb.net, ma in java come fare?

Hai diversi metodi... uno è questo:
Crei una classe estesa a JTabbedPane dove come parametro generale hai un ArrayList di JTextPane inizializzato.
E poi a seconda del metodo che usi per creare le tue schede fai l'override dello stesso aggiungendo la funzione di aggiunta del tuo JTextPane
aaa
18/10/12 20:20
Sevenjeak
Si si, il metodo setToolTipTextAt() lo appena letto su internet, non conoscevo questo metodo, purtroppo ancora non lo provato, visto che non ho avuto tempo, ma lo proverò presto.

Non credo che abbia ben capito il metodo per riferirsi ad un componente dentro la tab selezionata, potresti farmi un esempio? anche se io, più che questo metodo, mi interessava sapere se esisteva un metodo come questo, scritto in vb.net:

CType(tabs.selectedTab.Components(0), TextBox).text = "ok"


Ora non sarei sicuro di aver scritto proprio bene il codice, ma in poche parole, io più che altro, volevo sapere se era possibile riscrivere questa righa vb.net, con una semplice istruzione java, è possibile?

Altrimenti mi basterebbe un esempio del metodo che hai postato sopra.
aaa
18/10/12 22:10
bububs
Che io sappia no :-|

Adesso ti spiego tutto molto semplicemente:
hai un arraylist di jpanel personalizzati, ovvero una classe che estende a jpanel, formata in questo modo:
public ArrayList<MyJPanel> panels = new ArrayList<MyJPanel>();

mentre la classe:
public MyJPanel extends JPanel{
private JTextPane pane;

public MyJPanel(){
super();
pane = new JTextPane();
add(pane);
}
public JTextPane getTextPane(){
return pane;
}
}

e mettendo il caso che il tuo jtabbedpane sia questo:
JTabbedPane tabbedPane = new JTabbedPane();

gli aggiungi i vari componenti in questo modo:
        tabbedPane.addTab("Tab 1", null, panels[0], "Tab 1 tooltip");//primo pannello


Fino ad ora hai visto come creare il tutto, adesso tocca al settaggio: (cioè la conversione della tua funzione net in java)
per il titolo:
jtabbedpane.setToolTipTextAt(jtabbedpane.getSelectedIndex(), "Testo che vuoi che appaia");

per il textpane:
panels[tabbedpane.getSelectedIndex()].getTextPane().setText("Testo che vuoi che appaia");

Detto ciò ho finito :k:
aaa
19/10/12 7:40
Sevenjeak
Ho fatto una piccola applicazione di prova strutturata nel modo in cui servirebbe a me, per provare il metodo da te scritto, il codice è questo:

import javax.swing.*;

import java.util.*;
import java.awt.*;
import java.awt.event.*;

class Global 
{
	public static ArrayList<MyPanel> panes = new ArrayList<MyPanel>();
	public static JTabbedPane tabs = new JTabbedPane();
}

class MyPanel extends JPanel 
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextPane txtPane;
	
	public MyPanel()
	{
		super();
		txtPane = new JTextPane();
		add(txtPane);
	}
	
	public JTextPane get()
	{
		return txtPane;
	}
}

public class testmultitab 
{
	public static void main(String[] args)
	{
		JFrame wind = new JFrame();
		
		wind.setSize(100, 100);
		wind.setLayout(new GridLayout(2, 1));
		
		JButton addT = new JButton("Aggiungi tabella");
		
		addT.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) 
			{
				Global.tabs.addTab("Tab1", null, Global.panes[0], "Tab 1");
			}
		});
		
		wind.add(addT);
		
		wind.add(Global.tabs);
		
		wind.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		wind.setVisible(true);
	}
}


Nell'action del pulsante mi da errore nella prima riga del metodo actionPerformed(), in Global.panes[0], mi restituisce questo errore:

The type on the expression must be an array type but it resorved to ArrayList<MyPanel>

Come mai?
Ultima modifica effettuata da Sevenjeak 19/10/12 7:43
aaa
19/10/12 11:06
bububs
Ci sono 2 errori nel tuo codice:
- alla riga 14 devi creare il pannello perchè quando vai a creare la tua scheda ovviamente non c'è niente, percio' fai così:
Global.panes.add( new MyPanel() );

- alla riga 48 devi tenere a mente che non è un array ma un arraylist (bastava guardare le api ufficiali ), percio' modifica così:
Global.tabs.addTab("Tab1", null, Global.panes.get(0), "Tab1");
aaa
20/10/12 13:58
Sevenjeak
Ho modificato il mio codice e aggiunto un pulsante che stampa nella console, di eclipse in questo caso, il testo dentro alla tab selezionata è funziona, grazie per l'aiuto.
aaa
20/10/12 21:31
bububs
Postato originariamente da Sevenjeak:

Ho modificato il mio codice e aggiunto un pulsante che stampa nella console, di eclipse in questo caso, il testo dentro alla tab selezionata è funziona, grazie per l'aiuto.

Figurati :k:
aaa