2013-05-03 3 views
0

У меня есть центральная база данных, я подключаюсь к ней с помощью JDBC, и после некоторых приготовлений с данными я создаю 6 различных JFrames, и мне нравится отображать их на разных мониторах (мониторах) на разных стенах здания, которое я могу достичь только через IP (WiFi) одновременно. Могу ли я решить его с помощью GraphicsEnvironment?Различные JFrames на разных дисплеях

Я бы пожаловался на любые советы!

+4

Что вы имеете в виду * «достигают только через ф» *? Вы имеете в виду экраны или каждый другой компьютер? – MadProgrammer

+0

Только экраны! Программа будет работать только на одном главном ПК и будет 6 экранов (смарт-телевизоры). – user2346329

+0

Означает ли ОС, что каждый экран является отдельным монитором? – MadProgrammer

ответ

0

Если каждый экран можно увидеть в ОС в качестве отдельного графического устройства, вы должны быть в состоянии использовать что-то вроде ...

import java.awt.EventQueue; 
import java.awt.GraphicsConfiguration; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import java.awt.Rectangle; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class TestGC { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 
       GraphicsDevice[] sds = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); 
       for (GraphicsDevice sd : sds) { 
        System.out.println(sd.getIDstring()); 
        GraphicsConfiguration gc = sd.getDefaultConfiguration(); 
        JFrame f = new JFrame(gc); 
        f.add(new JLabel(sd.getIDstring())); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        f.pack(); 
        centerOn(f, gc); 
        f.setVisible(true); 
       } 
      } 
     }); 
    } 

    private static void centerOn(JFrame f, GraphicsConfiguration gc) { 
     Rectangle bounds = gc.getBounds(); 
     int x = bounds.x + ((bounds.width - f.getWidth())/2); 
     int y = bounds.y + ((bounds.height - f.getHeight())/2); 
     f.setLocation(x, y); 
    } 
} 
Смежные вопросы