2012-06-01 10 views
5

मुझे आशा है कि मैं एक डुप्लिकेट प्रश्न पोस्ट नहीं कर रहा हूं, लेकिन मुझे ऐसा कोई प्रश्न नहीं मिला, तो शायद मैं सुरक्षित हूं? वैसे भी ...एकाधिक स्क्रीन के लिए जावा जीयूआई फुलस्क्रीन

मेरे द्वारा किए जा रहे एप्लिकेशन के लिए, मेरे पास दो एप्लिकेशन (दो अलग-अलग प्रक्रियाएं और खिड़कियां) एक ही समय में खुलने जा रहे हैं। जिस कंप्यूटर पर इन अनुप्रयोगों पर चल रहे होंगे, उनमें कई मॉनीटर होंगे। मैं पहली एप्लिकेशन/विंडो को पूर्णस्क्रीन में चाहता हूं और अपने मॉनीटर (आसान भाग) पर कब्जा कर सकता हूं, और दूसरा दूसरा मॉनिटर पर पूर्णस्क्रीन होना चाहता है। यदि संभव हो, तो मैं उनके लिए इस तरह से शुरू करना चाहता हूं।

फिलहाल, मैं अपनी खिड़कियों इस कोड का उपयोग करके पूरी स्क्रीन बनाने हूँ:

this.setVisible(false); 
this.setUndecorated(true); 
this.setResizable(false); 
myDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
myDevice.setFullScreenWindow(this); 

वर्ग है कि इस में है JFrame वर्ग का एक विस्तार है और myDevice प्रकार "GraphicsDevice" की है। यह निश्चित रूप से संभव है कि मेरी खिड़की को पूर्णस्क्रीन बनाने का एक बेहतर तरीका है ताकि मेरे पास दो अलग-अलग मॉनीटर पर दो अलग-अलग एप्लिकेशन पूर्णस्क्रीन हो सकें।

अगर मैं किसी भी तरह से अस्पष्ट नहीं था, तो कृपया कहें और मैं स्पष्टीकरण में संपादित करने की कोशिश करूंगा!

उत्तर

5

सबसे पहले, आपको प्रत्येक स्क्रीन डिवाइस पर अपने फ्रेम को स्थानांतरित करने की आवश्यकता है।

frame1.setLocation(pointOnFirstScreen); 
frame2.setLocation(pointOnSecondScreen); 

फिर एक फ्रेम को अधिकतम करने के लिए, बस अपने JFrame पर इस फोन:

frame.setExtendedState(Frame.MAXIMIZED_BOTH); 

यहाँ एक काम कर उदाहरण है कि illustrating है:

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Frame; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import java.awt.Point; 

import javax.swing.BorderFactory; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.SwingUtilities; 

public class Test { 
    protected void initUI() { 
     Point p1 = null; 
     Point p2 = null; 
     for (GraphicsDevice gd : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) { 
      if (p1 == null) { 
       p1 = gd.getDefaultConfiguration().getBounds().getLocation(); 
      } else if (p2 == null) { 
       p2 = gd.getDefaultConfiguration().getBounds().getLocation(); 
      } 
     } 
     if (p2 == null) { 
      p2 = p1; 
     } 
     createFrameAtLocation(p1); 
     createFrameAtLocation(p2); 
    } 

    private void createFrameAtLocation(Point p) { 
     final JFrame frame = new JFrame(); 
     frame.setTitle("Test frame on two screens"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(new BorderLayout()); 
     final JTextArea textareaA = new JTextArea(24, 80); 
     textareaA.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1)); 
     panel.add(textareaA, BorderLayout.CENTER); 
     frame.setLocation(p); 
     frame.add(panel); 
     frame.pack(); 
     frame.setExtendedState(Frame.MAXIMIZED_BOTH); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new Test().initUI(); 
      } 
     }); 
    } 

} 
+0

हैलो, शीघ्र उत्तर के लिए धन्यवाद ! हालांकि, ऐसा कुछ नहीं लगता था। मैंने टिप्पणी की कि मैंने अपने फ्रेम को पूर्ण-स्क्रीन पर सेट करने से पहले क्या उपयोग किया था और कहा कि, और हाँ, दोनों एप्लिकेशन पूर्ण स्क्रीन पर गए, लेकिन वे दोनों एक ही मॉनीटर पर थे। मुझे दो अनुप्रयोगों को पूर्ण स्क्रीन बनाने के लिए, लेकिन अलग मॉनीटर पर बनाने की आवश्यकता थी। (प्रारंभ होने पर भी, यदि संभव हो) – Sephallia

+0

@ सेफेलिया मैं अपनी पोस्ट को पूरी तरह से काम करने वाले उदाहरण के साथ अपडेट करता हूं जो दो स्क्रीनों पर दो फ्रेम भेजता है (यदि आपके पास 2 स्क्रीन हैं)। चाल फ्रेम को दो अलग स्क्रीन पर रखने और फिर उन्हें अधिकतम करने के लिए है। –

+0

अरे, मुझे वास्तव में पूर्ण काम करने वाले उदाहरणों की आवश्यकता नहीं थी। जिस भाग में आप पहले खो रहे थे वह सेटलोकेशन था। मैंने सोचा कि मुझे इसमें शामिल होने की आवश्यकता हो सकती है, लेकिन मुझे नहीं पता था कि मुझे "बिंदु" के लिए उपयोग करने की आवश्यकता हो सकती है। आपका बहुत बहुत धन्यवाद! मैं आपकी पोस्ट को ऊपर उठाऊंगा, लेकिन मेरे पास अभी भी 15 प्रतिष्ठा x नहीं है:। माफ़ कीजिये! – Sephallia

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^