[JAVA] venster centeren

Pagina: 1
Acties:

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
Hoe kan ik in java een nieuw "windows"-venster
gecentreerd op het scherm laten weergeven,
onafhankelijk van de huidige resolutie van je beeldscherm??

thnx!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

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
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
package com.jph.swing;

import java.awt.*;
import javax.swing.*;

final public class SwingUtilities
{

    /**
     *Centreerd window op het scherm.
     *
     * @param   window  de window die gecentreerd word
     */
    static public void centerOnScreen(Window window)
    {
        int iWidth = window.getWidth();
        int iHeight = window.getHeight();
        
        //frame.setSize(iWidth, iHeight);
        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
        window.setLocation((screenDim.width - iWidth) / 2, (screenDim.height - iHeight) / 2);
    }
    

    /**
     *Centreerd childWindow op parentWindow.
     *
     * @param   parentWindow
     * @param   childWindow
     */
    static public void centerOnParent(Window parentWindow, Window childWindow)
    {
        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
        
        int xCenter = parentWindow.getX()+(parentWindow.getWidth()/2);
        int x = xCenter - childWindow.getWidth()/2;
        
        if(x<0)
        {
            x = 0;
        }
        else if(x+childWindow.getWidth()>=screenDim.getWidth())
        {
            x = (int)screenDim.getWidth()-childWindow.getWidth();
        }
            
        int yCenter = (parentWindow.getHeight() /2)+parentWindow.getY();
        int y = yCenter - childWindow.getHeight()/2;
        if(y<0)
            y = 0;
        
        childWindow.setLocation(x,y);
    }
    

    /**
     *Enabled of disabled alle componenten op de container.
     *
     * @param   container  De parentcontainer van de te enabled of disablen componenten
     * @param   enabled  of ze wel of niet geenabled moeten worden
     */
    public static void enableContainer(Container container,boolean enabled)
    {
        Component[] components = container.getComponents();
        Component component = null;
        for(int i=0; i<components.length; i++)
        {
            component = components[i];
            component.setEnabled(enabled);
            if(component instanceof Container)
                enableContainer((Container)component,enabled);
        }
    }
}

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

als we jbuilder toch niet hadden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height)
    {
    frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width)
    {
    frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
het werkt perfect inderdaad!
nou heb ik nog een vraagje:
ik maak voor een grafisch venster een nieuw Label aan:
code:
1
add(new Label("(c)2001, dit is een zin"));

hoe kan ik nou tussen "dit is" en "een zin" een newline laten komen?
\n werkt niet; dan krijg ik een vaag blokje in mijn scherm :) thnx!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

de label die kan maar 1 regel aan. Of je moet een textcomponent ofzo gebruiken en dan even niet editable maken en kleur van achtergrond bijstellen of je moet even kijken naar een MultiLineLabel (www.jars.com)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Als je Swing gebruikt kan je eenvoudige HTML in alle tekstcomponenten (en tooltips) opnemen. Hiermee kan je dus ook meerdere regels gebruiken.

Voorbeeld:
code:
1
new JLabel("<html>Hoi dit is een voorbeeld<br>met nieuwe regels</html>").

De eerste keer dat je zo'n label laat zien kan het wel fftjes duren want dan worden de HTML parser libs geladen. Als die eenmaal bij de hand zijn, loopt het als een speer.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Heb ik ook weer iets geleerd :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hier:
http://java.sun.com/docs/books/tutorial/uiswing/components/label.html
staat er meer over :) .

Je kan daar ook een geinig demootje downloaden. Overigens werkt het pas in 1.4.0 acceptabel, daarvoor werd een ander font gebruikt in HTML labels |:( .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1