Hi,
ich habe close-Buttons wie bei einem Browser, jedoch weiß ich nicht, wie ich über den Button den Index des Tabs auf dem er sich in der TabbedPane befindet herausbekomme.
habs über e.toString versucht und im Buttontext ein hidden value versteckt, dass ich dann aus dem toString über substring raushole. Das funktioniert aber nur solange man die Tabs dann in der gleichen Reihenfolge schließt, in der Sie geöffnet wurde, da ja hartcodiert.
Frage: wie bekomme ich den Index des Tabs in dem der Button sitzt?
MfG
hier der Code:
ich habe close-Buttons wie bei einem Browser, jedoch weiß ich nicht, wie ich über den Button den Index des Tabs auf dem er sich in der TabbedPane befindet herausbekomme.
habs über e.toString versucht und im Buttontext ein hidden value versteckt, dass ich dann aus dem toString über substring raushole. Das funktioniert aber nur solange man die Tabs dann in der gleichen Reihenfolge schließt, in der Sie geöffnet wurde, da ja hartcodiert.
Frage: wie bekomme ich den Index des Tabs in dem der Button sitzt?
MfG
hier der Code:
Java:
public void setTabTitle(int index){
JPanel pnlTab = new JPanel(new GridBagLayout());
pnlTab.setOpaque(false);
JLabel lblTitle = new JLabel(mouseWahl);
System.out.println("Anzahl tabs: "+tabbedPane.getTabCount());
int tabIndex = tabbedPane.getTabCount()-1;
JButton btnClose = new JButton("<HTML><font color='white'>"
+"<input type='hidden' name='"+tabIndex+"' value= ''>"
+ "<b>X</b></font></HTML>");
btnClose.setBackground(Color.RED.darker());
btnClose.setPreferredSize(new Dimension(20,20));
btnClose.setBorder(new EmptyBorder(1,1,1,1));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1;
pnlTab.add(lblTitle, gbc);
gbc.gridx++;
gbc.weightx = 0;
pnlTab.add(btnClose, gbc);
tabbedPane.setTabComponentAt(index, pnlTab);
btnClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = e.toString();
System.out.println(s);
s = s.substring(101, 102);
System.out.println(s);
tabbedPane.remove(Integer.parseInt(s));
repaint();
}
});