IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Frame Transparent


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut Frame Transparent
    Voilà, j'aimerai implémenter la fonction VB SetWindowRgn en java, j'ai donc pour cela besoin de rendre es bouts de Frame transparents.

    Exemple, dans une Frame 800*600, rendre un réctangle de 100*600 situé en (0,0) pour faire disparaitre le haut de mon frame.

    merci d'avance de me mettre sur une piste parce que pour l'instant je ne trouve rien...

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    C'est pas tres explicite tout cela, elle fait quoi cette fonction VB.

    Et pourquoi tu as besoin de rendre des bouts de ta fenetre transparent...

    Ca m'étonnerait que tu puisses rendre un bout de ta frame transparent de la sorte, mais pour faire disparaitre le titre, tu peut employer setUndecorated(true), ensuite ce que tu peut essayer de faire, c'est dessiner sur ta frame le fond d'écran, pour cela, regarde la classe Robot... Je sais c'est un peu capillotractés, mais je vois rien d'autres

  3. #3
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    MDR ... essaye plutot une JWindow

  4. #4
    Membre confirmé Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    C'est pour faire exactement la même chose que Winshape
    http://www.filebot.org/Development/T...item4937-2.htm

    ...sauf pour une application plus complexe... et en java...

    je vais jetter un oeil à la classe Jwindow

  5. #5
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Tu peux peut-être te débrouiller avec ca:

    http://gfx.developpez.com/tutoriel/java/swing/splash/

  6. #6
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Salut !

    Tiens, si ca peux t'aider...
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
     
     
    import java.awt.*;
    import java.awt.event.*;
     
    import javax.swing.*;
     
    public class TransparentWindow extends JWindow implements FocusListener,
    		MouseMotionListener, MouseListener, ActionListener {
    	private Image img, tim;
     
    	private String s = "yo !";
     
    	private boolean _isSpeaking = false;
     
    	private Graphics _graphic;
     
    	private Point _point;
     
    	private Robot _r;
     
    	private final JPopupMenu menu = new JPopupMenu();
     
    	public TransparentWindow() {
    		setBounds(800, 170, 150, 150);
    		getContentPane().setLayout(new BorderLayout());
    		try {
    			_r = new Robot();
    		} catch (AWTException awe) {
    			System.out.println("robot exception...");
    		}
     
    		capture();
    		addMouseMotionListener(this);
    		addMouseListener(this);
    		addFocusListener(this);
    		setVisible(true);
    		//		 Create and add a menu item
    		JMenuItem item = new JMenuItem("Dis bonjour !");
    		item.addActionListener(this);
    		menu.add(item);
    		item = new JMenuItem("Wizz du Munix");
    		item.addActionListener(this);
    		menu.add(item);
    		menu.addSeparator();
    		item = new JMenuItem("Cacher le Munix");
    		item.addActionListener(this);
    		menu.add(item);
    	}
     
    	public JWindow getMe() {
    		return this;
    	}
     
    	public void mouseDragged(MouseEvent m) {
    		if (_point == null)
    			return;
    		Point p = m.getPoint();
    		int x = getX() + p.x - _point.x;
    		int y = getY() + p.y - _point.y;
    		setLocation(x, y);
    		paintP(getGraphics());
    	}
     
    	public void mouseMoved(MouseEvent m) {
    	}
     
    	public void mouseClicked(MouseEvent m) {
     
    	}
     
    	public void mouseEntered(MouseEvent m) {
    	}
     
    	public void mouseExited(MouseEvent m) {
    	}
     
    	public void mouseReleased(MouseEvent m) {
    		_point = null;
    		if (m.getButton() == MouseEvent.BUTTON3)
    			if (m.isPopupTrigger()) {
    				menu.show(m.getComponent(), m.getX(), m.getY());
    			}
    	}
     
    	public void mousePressed(MouseEvent m) {
    		_point = m.getPoint();
    		if (m.isPopupTrigger()) {
    			menu.show(m.getComponent(), m.getX(), m.getY());
    		}
    	}
     
    	public void focusGained(FocusEvent fe) {
    		setSize(0, 0);
    		capture();
    		setSize(100, 100);
    	}
     
    	public void focusLost(FocusEvent fe) {
    	}
     
    	public void capture() {
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		img = _r.createScreenCapture(new Rectangle(0, 0, d.width, d.height));
    	}
     
    	public void captureX() {
    		Rectangle rect = getBounds();
    		setVisible(false);
    		Thread.yield();
    		Image xmg = _r.createScreenCapture(rect);
    		img.getGraphics().drawImage(xmg, rect.x, rect.y, rect.width,
    				rect.height, null);
    		setVisible(true);
    	}
     
    	public void paint(Graphics g) {
    		Rectangle rect = g.getClipBounds();
    		if (tim == null) {
    			tim = createImage(getWidth(), getHeight());
    			_graphic = tim.getGraphics();
    		}
    		if (!rect.getSize().equals(getSize()))
    			captureX();
    		else
    			paintP(g);
    	}
     
    	public void paintP(Graphics g) {
    		_graphic.drawImage(img, 0, 0, getWidth(), getHeight(), getX(), getY(),
    				getX() + getWidth(), getY() + getHeight(), null);
    		// corps
    		_graphic.setColor(Color.black);
    		_graphic.fillOval(10, 20, 70, 80);
     
    		//bras
    		_graphic.fillOval(5, 50, 20, 10);
    		_graphic.fillOval(65, 50, 20, 10);
     
    		//yeux
    		_graphic.setColor(Color.white);
    		_graphic.fillOval(32, 28, 17, 17);
    		_graphic.fillOval(45, 30, 13, 13);
    		// ventre
    		_graphic.fillOval(20, 48, 50, 50);
     
    		//noir des yeux
    		_graphic.setColor(Color.black);
    		_graphic.fillOval(37, 32, 10, 10);
    		_graphic.fillOval(45, 33, 6, 6);
     
    		//jambes
    		_graphic.setColor(Color.orange);
    		_graphic.fillOval(15, 90, 20, 10);
    		_graphic.fillOval(55, 90, 20, 10);
     
    		//bec
    		_graphic.fillOval(41, 40, 9, 12);
    		_graphic.setFont(new Font("Arial", Font.BOLD, 14));
    		_graphic.setColor(Color.gray);
    		if (_isSpeaking){
    			_graphic.setColor(Color.gray);
    			_graphic.fillOval(50, 0, 70, 30);
    			_graphic.fillOval(60, 20, 15, 15);
    			_graphic.setColor(Color.white);
    			_graphic.drawString(s, 60, 20);
    		}
    		g.drawImage(tim, 0, 0, null);
    	}
     
    	public void update(Graphics g) {
    		this.paint(g);
    	}
     
    	public static void main(String[] args) {
    		new TransparentWindow();
    	}
     
    	/*
    	 * overrided method
    	 */
    	public void actionPerformed(ActionEvent arg0) {
    		if (arg0.getActionCommand().equalsIgnoreCase("dis bonjour !")) {
    			_isSpeaking = true;
    			s = "Coucou";
    			this.paintP(getGraphics());
    		} else if (arg0.getActionCommand().equalsIgnoreCase("cacher le munix")) {
    			System.exit(0);
    		} else if (arg0.getActionCommand().equalsIgnoreCase("wizz du Munix")) {
    			new Wizz(this).start();
    		}
    	}
    }
    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
     
    import javax.swing.JWindow;
     
    /*
     * Created on 21 janv. 2006
     * 
     */
     
    /**
     * @author Julien<br>
     * Project : Wizz<br>
     * Package : <br>
     * File : Wizz.java<br>
     * Creation : 21 janv. 2006<br>
     * Last modified : 21 janv. 2006<br>
     * Comment : Permet de faire un Wizz comme dans MSN messenger...<br>
     **/
     
    public class Wizz implements Runnable {
    	private JWindow f;
     
    	private Thread t;
     
    	public Wizz(JWindow f) {
    		super();
    		this.f = f;
    	}
     
    	public void start() {
    		if (t == null) {
    			t = new Thread(this);
    		}
    		t.start();
    	}
     
    	/*
    	 * overrided method
    	 */
    	public void run() {
    		int x = f.getX();
    		int y = f.getY();
    		for (int i = 0; i < 40; i++) {
    			if (i % 2 == 0)
    				f.setLocation(f.getX() + 5, f.getY() - 5);
    			else
    				f.setLocation(f.getX() - 5, f.getY() + 5);
    			try {
    				Thread.sleep(10);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    		}
    		f.setLocation(x, y);
    	}
    }
    Note : Ca ne sert strictement à rien... Mais c'est marrant ! Quoique...

    +++
    Ju

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Ce n'est pas possible, pour le moment, a implementer correctement en Java sans ecrire un peu de code natif. On avait fait cela pour JavaOne 2005. Cherche la presentation "GUI Makeover" sur le web et tu devrais tomber sur le code quelque part.

  8. #8
    Membre confirmé Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    merci beaucoup pour votre aide, mais après étude plus approfondie de la chose, je ne voudrai pas rendre des bout de frame transparents, mais plutot modifier la forme de la Frame.

    http://www.developpez.net/forums/vie...696975#2696975

Discussions similaires

  1. [XL-2007] Erreur sur Frame transparent
    Par jerome94 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/05/2013, 21h13
  2. Fond de frame transparent
    Par Vikisme dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 09/06/2012, 16h09
  3. Réponses: 0
    Dernier message: 28/12/2011, 16h37
  4. Astuce pour rendre un cadre (frame) transparent
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/04/2008, 15h43
  5. [VB6] Problème de transparence d'une frame
    Par nigueb dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/06/2006, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo