More than meets the eye
There is no I in TEAM... but there is ME
system specs
Hoe bedoel je "een popup op de tabbladen" ? Bedoel je zoiets als dat je een tabblad laat zien nadat er op een tabje geclickt is en dat er dan een popup verschijnt?
Verwijderd
bedoel je misschien zoiets:
Main.java:
Popup.java:
Main.java:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| import javax.swing.*;
import java.awt.*;
class Main extends JFrame
{
JTabbedPane jtp = new JTabbedPane();
Main()
{
setBounds(100,100,300,300);
getContentPane().setLayout(new BorderLayout());
jtp.addMouseListener(new Popup());
getContentPane().add("Center", jtp);
show();
}
public static void main(String[] args)
{
new Main();
}
} |
Popup.java:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| import javax.swing.JPopupMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
class Popup extends JPopupMenu implements ActionListener, MouseListener
{
JMenuItem close = new JMenuItem("Close");
Popup()
{
add(close);
close.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == close)
System.exit(0);
}
public void mouseReleased(MouseEvent me)
{
if(me.isMetaDown())
show(me.getComponent(), me.getX(), me.getY());
}
public void mouseClicked(MouseEvent me){}
public void mousePressed(MouseEvent me){}
public void mouseEntered(MouseEvent me){}
public void mouseExited (MouseEvent me){}
} |
Als je met je rechtermuisknop op een tabje klikt, dat ie een popup laat zien.Dash2in1 schreef op 05 januari 2004 @ 23:08:
Hoe bedoel je "een popup op de tabbladen" ? Bedoel je zoiets als dat je een tabblad laat zien nadat er op een tabje geclickt is en dat er dan een popup verschijnt?
@JavaRules: ik heb even 2 lege JPanels toegevoegd aan je code om de tabs te krijgen, en dan doet ie het goed. Ik probeer het zo nog even met mijn echte code, maar het lijkt de oplossing. Vreemd dat het dan eerder niet werkte.
More than meets the eye
There is no I in TEAM... but there is ME
system specs
Geprobeerd, maar het werkt nog niet.
Even de relevante code:
Toevoegen van panels:
JXTV is een subclass van JFrame, JXTVPanel een subclass van JPanel. Ik doe dus niet veel anders dan JavaRules, hooguit wat uitgebreider.
De volgende code werkt wel:
Even de volledige code:
JXTV.java
JXTVPanel.java
FileFilter.java
GuiUtils.java
Even de relevante code:
Java:
Die Popup is gewoon die van JavaRules, alleen dan in mijn package gezet. Het werkt alleen weer niet. Wel als ik nog geen panels heb toegevoegd, maar zodra dat gebeurd is doet ie niks.1
2
3
4
5
6
7
8
9
10
11
12
13
| public JXTV() { super("JXTV"); tabs = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); tabs.setPreferredSize(new Dimension(640, 480)); tabs.addMouseListener(new Popup()); // nieuwe regel getContentPane().add(tabs); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); chooser.setFileFilter(new FileFilter("xml", "XML Files")); chooser.setAcceptAllFileFilterUsed(false); // code voor het toevoegen van een gewoon menu met actions } |
Toevoegen van panels:
Java:
Verwijderen van panels:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| private void open() { chooser.showOpenDialog(this); File file = chooser.getSelectedFile(); if (file != null) { String filename = file.getPath(); int index = tabs.indexOfComponent(new JXTVPanel(filename)); if (index == -1) { JXTVPanel panel = new JXTVPanel(); panel.open(file); tabs.add(file.getName(), panel); setMenuItemsEnabled(true); index = tabs.indexOfComponent(panel); } else { // already added, reload it reload(); } tabs.setSelectedIndex(index); tabs.setToolTipTextAt(index, filename); } } |
Java:
Het panel.open(file) of het gedoe met de index in de open method verwijderen lost het niet op. JXTVPanels toevoegen aan JavaRules' Main ipv JPanels werkt wel, dus aan die class ligt het niet.1
2
3
4
5
6
7
8
| private void close() { tabs.remove(tabs.getSelectedComponent()); if (tabs.getTabCount() == 0) { setMenuItemsEnabled(false); } } |
JXTV is een subclass van JFrame, JXTVPanel een subclass van JPanel. Ik doe dus niet veel anders dan JavaRules, hooguit wat uitgebreider.
De volgende code werkt wel:
Java:
Ik snap het echt niet meer.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| import javax.swing.*; import java.awt.*; import java.io.*; class Main extends JFrame { JTabbedPane jtp = new JTabbedPane(); Main(String filename) throws Exception { setDefaultCloseOperation(EXIT_ON_CLOSE); // setBounds(100,100,300,300); getContentPane().setLayout(new BorderLayout()); jtp.setPreferredSize(new Dimension(300, 300)); jtp.addMouseListener(new Popup()); getContentPane().add("Center", jtp); File f = new File(filename); JXTVPanel p = new JXTVPanel(); p.open(f); jtp.add("Bla", p); pack(); show(); } public static void main(String[] args) throws Exception { new Main(args[0]); } } |
Even de volledige code:
JXTV.java
JXTVPanel.java
FileFilter.java
GuiUtils.java
[ Voor 7% gewijzigd door Robtimus op 06-01-2004 10:45 ]
More than meets the eye
There is no I in TEAM... but there is ME
system specs
Verwijderd
vreemd... en als je m'n popup nu eens koppelt aan zowel de JTabbedPane als aan de JXTVPanel ?
dus:
JXTVPanel panel = new JXTVPanel();
panel.addMouseListener(new Popup());
en daarna weet ook ik 't niet meer hoor
't ziet er verder gewoon allemaal normaal uit...
dus:
JXTVPanel panel = new JXTVPanel();
panel.addMouseListener(new Popup());
en daarna weet ook ik 't niet meer hoor
't ziet er verder gewoon allemaal normaal uit...
Nope, werkt niet. Alleen als ik op het randje van de JTP klik krijg ik die popup.
I give up, dan maar niet
I give up, dan maar niet
More than meets the eye
There is no I in TEAM... but there is ME
system specs
Pagina: 1