2013-02-13 4 views
0

Привет, я делаю игру на Java, и я получаю screenSize с помощью DefaultToolkit, но проблема заключается в том, что это определяет размер экрана, если он был FULLSCREEN. Как я могу получить размер экрана в области, которую занимает экран игры (который не является полноэкранным). Чтобы быть более точным, мой спрайт перемещается за край нижнего экрана из-за панели инструментов системы, которая добавляет к нему дополнительные «дополнения». Как я могу получить размер области, на которой играет игровой экран? Большое спасибоРазмер экрана в Java

+2

Используйте [ 'Frame.setExtendedState (MAXIMIZED_BOTH)'] (http://docs.oracle.com/javase/7/ docs/api/java/awt/Frame.html # setExtendedState% 28int% 29), а затем 'gameScreen.getSize()' для размеров области рисования. –

+0

@AndrewThompson Предполагая, что кадр не декорирован, в противном случае вы хотели бы использовать размер контейнера – MadProgrammer

+0

@MadProgrammer Я предполагал, что 'gameScreen' был« областью рендеринга/рисования игры », расширенной от« JComponent' или «JPanel», чтобы добавить (или установить как) область содержимого кадра. Хотя, возможно, я должен был сделать это более ясным. ;) –

ответ

1

Вы можете получить размер панели задач и другие вещи, используя вставки. Вот пример, чтобы получить размер экрана, который не включает панель задач/другие.

// Screen size 
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 

// Screen insets 
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration()); 

// Get the real width/height 
int width = screen.getWidth() - insets.left - insets.right; 
int height = screen.getHeight() - insets.top - insets.bottom; 
+0

Предполагая, что окно, используемое OP, не декорировано, в противном случае вам нужно просто использовать размер контейнера. Но это может быть использовано для установки размера окна в первую очередь +1 – MadProgrammer

3

Я думаю, что экран Bounds является то, что вы ищете:

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

public class FrameInfo 
{ 
    public static void main(String[] args) 
    { 
     GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     Rectangle bounds = env.getMaximumWindowBounds(); 
     System.out.println("Screen Bounds: " + bounds); 

     GraphicsDevice screen = env.getDefaultScreenDevice(); 
     GraphicsConfiguration config = screen.getDefaultConfiguration(); 
     System.out.println("Screen Size : " + config.getBounds()); 
     System.out.println(Toolkit.getDefaultToolkit().getScreenSize()); 

     JFrame frame = new JFrame("Frame Info"); 
     frame.setSize(200, 200); 
     frame.setVisible(true); 

     System.out.println("Frame Size : " + frame.getSize()); 
     System.out.println("Frame Insets : " + frame.getInsets()); 
     System.out.println("Content Size : " + frame.getContentPane().getSize()); 
    } 
} 
Смежные вопросы