Bonsoir,
je suis entrain de développer une application en java. Dans cette application je voudrais pouvoir ajouter des Jframe contenant des JTextarea que je voudrais sauvegarder su le JPanel en tant qu'image et a chaque fois que je clic sur une des images cela me sortira le dialog avec le commentaire déjà écrit. J'ai essayé de travailler avec JDialog mais le minimiser je ne sais pas comment faire. Le code que j'ai écrit pour l'instant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public class CommentDialog extends JFrame { private JTextArea textArea = new JTextArea(); private JScrollPane scrollpane ; private JButton button1,button2; public CommentDialog() { addnewComment(); } public void addnewComment() { removeMinMaxClose(this); setUndecorated(true); setDefaultLookAndFeelDecorated( false ); JPanel pane = new JPanel(new GridLayout()); button1 = new JButton(minimizeAction); button1.setMargin(new Insets(0, 0, 0, 0)); button2 = new JButton(exitAction); button2.setMargin(new Insets(0, 0, 0, 0)); pane.add(button1); pane.add(button2); getRootPane().setWindowDecorationStyle(JRootPane.QUESTION_DIALOG); scrollpane = new JScrollPane(textArea); scrollpane.setToolTipText(textArea.getText()); setSize(new Dimension(150,100)); setTitle("Commentaire"); setType(Type.UTILITY); setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); add(pane, BorderLayout.NORTH); add(scrollpane); revalidate(); } public void removeMinMaxClose(Component comp) { if(comp instanceof AbstractButton) { comp.getParent().remove(comp); } if (comp instanceof Container) { Component[] comps = ((Container)comp).getComponents(); for(int x = 0, y = comps.length; x < y; x++) { removeMinMaxClose(comps[x]); } } } private final Action exitAction = new AbstractAction("", new ImageIcon(getClass().getClassLoader().getResource("resources/Icons/close.png"))) { @Override public void actionPerformed(ActionEvent e) { dispose(); } }; private final Action minimizeAction = new AbstractAction("", new ImageIcon(getClass().getClassLoader().getResource("resources/Icons/minimize.png"))) { @Override public void actionPerformed(ActionEvent e) { setState(JFrame.ICONIFIED); } }; public String getComment() { return textArea.getText(); } }
et j active le mouselistener que apres avoir cliquer sur un button
Action du bouton lors du clic le mouselistener se met en marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 static MouseAdapter mouseListener = new MouseAdapter() { public void mousePressed(MouseEvent e) { if( e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2) { Point p = e.getPoint(); SwingUtilities.convertPointToScreen(p, com.pdfapp.QHG.PDFJFrame.m_viewerComponentPanel); showDialog(p,com.pdfapp.QHG.PDFJFrame.frame); } } }; private static void showDialog(Point point, JFrame frame) { if ( commentDialog!=null ) { commentDialog.dispose(); } List<CommentDialog> liste = new ArrayList<>(); commentDialog=new CommentDialog(); commentDialog.addnewComment(); //liste.add(commentDialog); commentDialog.setLocation(point.x-commentDialog.getWidth()/2, point.y-commentDialog.getHeight()/2); CommentDialog thisCommentDialog = commentDialog; liste.add(thisCommentDialog); commentDialog.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { String comment = thisCommentDialog.getComment(); thisCommentDialog.dispose(); JOptionPane.showMessageDialog(frame, "Le commentaire saisi : " + comment); } }); commentDialog.setVisible(true); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part com.pdfapp.QHG.PDFJFrame.ppane.addMouseListener(mouseListener);
Ce que je veux c'est pouvoir à chaque double clic de la souris ajouter au frame un commentdialog et en le réduisant ça s'enregistre en tant qu'icone sur le jpanel. Merci pour votre aide !! Je débute Java et surtout le AWT/SWING !
Partager