Jak uzyskać szerokość ekranu w Javie?


Czy ktoś wie, jak uzyskać szerokość ekranu w Javie? Czytałem coś o jakiejś metodzie zestawu narzędzi, ale nie jestem pewien, co to jest.
Podziękować,
Andrzej
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

java.awt.Toolkit.getDefaultToolkit().getScreenSize()
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto dwie metody, których używam tego konta dla wielu monitorów i wstawek na pasku zadań. Jeśli nie potrzebujesz tych dwóch metod osobno, możesz oczywiście uniknąć dwukrotnego konfigurowania grafiki.
static public Rectangle getScreenBounds(Window wnd) {
Rectangle sb;
Insets si=getScreenInsets(wnd); if(wnd==null) {
sb=GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration()
.getBounds();
}
else {
sb=wnd
.getGraphicsConfiguration()
.getBounds();
} sb.x +=si.left;
sb.y +=si.top;
sb.width -=si.left+si.right;
sb.height-=si.top+si.bottom;
return sb;
}static public Insets getScreenInsets(Window wnd) {
Insets si; if(wnd==null) {
si=Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getDefaultScreenDevice()
.getDefaultConfiguration());
}
else {
si=wnd.getToolkit().getScreenInsets(wnd.getGraphicsConfiguration());
}
return si;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Obszar roboczy to obszar pulpitu wyświetlacza, z wyłączeniem pasków zadań, zadokowanych okien i zadokowanych pasków narzędzi.
Jeśli chcesz, aby był to „obszar roboczy” ekranu, użyj tego:
public static int GetScreenWorkingWidth() {
return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width;
}public static int GetScreenWorkingHeight() {
return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Poniższy kod powinien to zrobić (jeszcze go nie wypróbowałem):
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
gd.getDefaultConfiguration().getBounds().getWidth();


edytować

:
W przypadku wielu monitorów należy użyć następującego kodu (wziętego z

javadoc
java.awt.GraphicsConfiguration
http://java.sun.com/javase/6/d ... .html
:
Rectangle virtualBounds = new Rectangle();
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
GraphicsDevice[] gs =
ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
GraphicsDevice gd = gs[j];
GraphicsConfiguration[] gc =
gd.getConfigurations();
for (int i=0; i < gc.length; i++) {
virtualBounds =
virtualBounds.union(gc[i].getBounds());
}
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przybory
http://java.sun.com/j2se/1.4.2 ... .html
ma kilka klas, które mogą pomóc:

W końcu używamy 1 i 2, aby obliczyć maksymalny dozwolony rozmiar okna. Aby uzyskać odpowiednią konfigurację grafiki, używamy
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration();

ale mogą istnieć inteligentniejsze rozwiązania z wieloma monitorami.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

OP prawdopodobnie chciał czegoś takiego:
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Toolkit.getDefaultToolkit().getScreenSize().getWidth()
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz to zdobyć za pomocą

Zestaw narzędzi AWT
http://java.sun.com/j2se/1.4.2 ... .html
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Toolkit.getScreenSize()
http://java.sun.com/javase/6/d ... nSize()
.
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli potrzebujesz rozdzielczości ekranu, do której jest obecnie przypisany określony komponent (na tym ekranie widoczna jest większość okna głównego), możesz użyć

ta odpowiedź
https://stackoverflow.com/a/22533992/1184842
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dobrym sposobem określenia, czy coś znajduje się w granicach wizualnych, jest użycie
Screen.getScreensForRectangle(x, y, width, height).isEmpty();
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jest to ulepszenie rozwiązania wielomonitorowego, które opublikował (powyżej) Laurence Dole. Podobnie jak w przypadku jego rozwiązania, ten kod uwzględnia wiele monitorów i wstawek na pasku zadań. Zawiera następujące funkcje:

getScreenInsets()

,

getScreenWorkingArea()

i

getScreenTotalArea()

.
Zmiany w stosunku do wersji Lawrence Dol:
  • Pozwala to uniknąć dwukrotnego uzyskania konfiguracji grafiki.
  • Dodano funkcję uzyskiwania całkowitej powierzchni ekranu.
  • Zmieniono nazwy zmiennych dla przejrzystości.
  • Dodano dokumentację.

Kod:
/**
* getScreenInsets, This returns the insets of the screen, which are defined by any task bars
* that have been set up by the user. This function accounts for multi-monitor setups. If a
* window is supplied, then the the monitor that contains the window will be used. If a window
* is not supplied, then the primary monitor will be used.
*/
static public Insets getScreenInsets(Window windowOrNull) {
Insets insets;
if (windowOrNull == null) {
insets = Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice()
.getDefaultConfiguration());
} else {
insets = windowOrNull.getToolkit().getScreenInsets( windowOrNull.getGraphicsConfiguration());
}
return insets;
}/**
* getScreenWorkingArea, This returns the working area of the screen. (The working area excludes
* any task bars.) This function accounts for multi-monitor setups. If a window is supplied,
* then the the monitor that contains the window will be used. If a window is not supplied, then
* the primary monitor will be used.
*/
static public Rectangle getScreenWorkingArea(Window windowOrNull) {
Insets insets;
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
insets = Toolkit.getDefaultToolkit().getScreenInsets(ge.getDefaultScreenDevice()
.getDefaultConfiguration());
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
insets = windowOrNull.getToolkit().getScreenInsets(gc);
bounds = gc.getBounds();
}
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
return bounds;
}/**
* getScreenTotalArea, This returns the total area of the screen. (The total area includes any
* task bars.) This function accounts for multi-monitor setups. If a window is supplied, then
* the the monitor that contains the window will be used. If a window is not supplied, then the
* primary monitor will be used.
*/
static public Rectangle getScreenTotalArea(Window windowOrNull) {
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
bounds = gc.getBounds();
}
return bounds;
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się