반응형
JDialog를 화면 중앙에 어떻게 배치합니까?
화면 중앙에 JDialog를 배치하려면 어떻게해야합니까?
Java 1.4 이상에서는 다음을 수행 할 수 있습니다.
final JDialog d = new JDialog();
d.setSize(200,200);
d.setLocationRelativeTo(null);
d.setVisible(true);
또는 아마도 (1.4 이전) :
final JDialog d = new JDialog();
d.setSize(200, 200);
final Toolkit toolkit = Toolkit.getDefaultToolkit();
final Dimension screenSize = toolkit.getScreenSize();
final int x = (screenSize.width - d.getWidth()) / 2;
final int y = (screenSize.height - d.getHeight()) / 2;
d.setLocation(x, y);
d.setVisible(true);
pack()
방법 뒤에 다음 줄을 사용하십시오 .
setLocation((Toolkit.getDefaultToolkit().getScreenSize().width)/2 - getWidth()/2, (Toolkit.getDefaultToolkit().getScreenSize().height)/2 - getHeight()/2);
화면 중앙 또는 부모 내부에 두 개의 도우미.
// Center on screen ( absolute true/false (exact center or 25% upper left) )
public void centerOnScreen(final Component c, final boolean absolute) {
final int width = c.getWidth();
final int height = c.getHeight();
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width / 2) - (width / 2);
int y = (screenSize.height / 2) - (height / 2);
if (!absolute) {
x /= 2;
y /= 2;
}
c.setLocation(x, y);
}
// Center on parent ( absolute true/false (exact center or 25% upper left) )
public void centerOnParent(final Window child, final boolean absolute) {
child.pack();
boolean useChildsOwner = child.getOwner() != null ? ((child.getOwner() instanceof JFrame) || (child.getOwner() instanceof JDialog)) : false;
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
final Dimension parentSize = useChildsOwner ? child.getOwner().getSize() : screenSize ;
final Point parentLocationOnScreen = useChildsOwner ? child.getOwner().getLocationOnScreen() : new Point(0,0) ;
final Dimension childSize = child.getSize();
childSize.width = Math.min(childSize.width, screenSize.width);
childSize.height = Math.min(childSize.height, screenSize.height);
child.setSize(childSize);
int x;
int y;
if ((child.getOwner() != null) && child.getOwner().isShowing()) {
x = (parentSize.width - childSize.width) / 2;
y = (parentSize.height - childSize.height) / 2;
x += parentLocationOnScreen.x;
y += parentLocationOnScreen.y;
} else {
x = (screenSize.width - childSize.width) / 2;
y = (screenSize.height - childSize.height) / 2;
}
if (!absolute) {
x /= 2;
y /= 2;
}
child.setLocation(x, y);
}
여기에 여러 모니터로 화면 크기를 검색하는 솔루션이 있습니다.
import java.awt.*;
import javax.swing.JFrame;
/**
* Méthodes statiques pour récupérer les informations d'un écran.
*
* @author Jean-Claude Stritt
* @version 1.0 / 24.2.2009
*/
public class ScreenInfo {
/**
* Permet de récupérer le numéro de l'écran par rapport à la fenêtre affichée.
* @return le numéro 1, 2, ... (ID) de l'écran
*/
public static int getScreenID( JFrame jf ) {
int scrID = 1;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();
for (int i = 0; i < gd.length; i++) {
GraphicsConfiguration gc = gd[i].getDefaultConfiguration();
Rectangle r = gc.getBounds();
if (r.contains(jf.getLocation())) {
scrID = i+1;
}
}
return scrID;
}
/**
* Permet de récupérer la dimension (largeur, hauteur) en px d'un écran spécifié.
* @param scrID --> le n° d'écran
* @return la dimension (largeur, hauteur) en pixels de l'écran spécifié
*/
public static Dimension getScreenDimension( int scrID ) {
Dimension d = new Dimension(0, 0);
if (scrID > 0) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
DisplayMode mode = ge.getScreenDevices()[scrID - 1].getDisplayMode();
d.setSize(mode.getWidth(), mode.getHeight());
}
return d;
}
/**
* Permet de récupérer la largeur en pixels d'un écran spécifié.
* @param scrID --> le n° d'écran
* @return la largeur en px de l'écran spécifié
*/
public static int getScreenWidth( int scrID ) {
Dimension d = getScreenDimension(scrID);
return d.width;
}
/**
* Permet de récupérer la hauteur en pixels d'un écran spécifié.
* @param scrID --> le n° d'écran
* @return la hauteur en px de l'écran spécifié
*/
public static int getScreenHeight( int scrID ) {
Dimension d = getScreenDimension(scrID);
return d.height;
}
}
AFAIK는 GraphicEnvironment를 각 JDialog / JFrame / JWindow 생성자에 전달할 수 있습니다. 이 개체는 사용할 모니터를 설명합니다.
참고 URL : https://stackoverflow.com/questions/213266/how-do-i-center-a-jdialog-on-screen
반응형
'your programing' 카테고리의 다른 글
CSS : "div"안에 "라벨"과 "입력"을 수직으로 정렬하는 방법은 무엇입니까? (0) | 2020.10.09 |
---|---|
비 최종 필드의 동기화 (0) | 2020.10.09 |
Java에서 문자열의 표시 너비 계산 (0) | 2020.10.09 |
.NET 구성 파일 configSource는 응용 프로그램 디렉터리 폴더 외부에 있습니다. (0) | 2020.10.09 |
Json.Net의 개인 세터 (0) | 2020.10.09 |