2012-03-17 19 views
6

मुझे अपनी स्क्रीन पर जेएफआरएएम की स्थिति की आवश्यकता है। लेकिन मैं उन्हें स्क्रीन के दाहिने तरफ दिखाई नहीं दे सकता।स्क्रीन पर दाएं नीचे

कृपया कोई मुझे बता सकता है कि उन्हें कैसे रखा जाए, यदि आप वर्णन कर सकते हैं कि यह कैसे करना है, तो यह बहुत अच्छा होगा।

यहां तक ​​कि कोड अब तक है।

//Gets the screen size and positions the frame left bottom of the screen 
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); 
    Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); 
    int x = (int)rect.getMinX(); 
    int y = (int)rect.getMaxY()- frame.getHeight(); 
    frame.setLocation(x ,y - 45); 
+0

कुछ प्लेटफॉर्म इस सीमा को सीमित करते हैं, जैसा कि यहां बताया गया है [http://stackoverflow.com/a/2188981/230513)। – trashgod

उत्तर

13

नीचे दिए गए उदाहरण का प्रयास करें। ध्यान दें कि pack() "इस Window को इसके आकार के पसंदीदा आकार और लेआउट को फिट करने के लिए आकार देने के कारण बनाता है।"

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 
import java.awt.Rectangle; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

/** @see http://stackoverflow.com/q/9753722/230513 */ 
public class LowerRightFrame { 

    private void display() { 
     JFrame f = new JFrame("LowerRightFrame"); 
     f.add(new JPanel() { 

      @Override // placeholder for actual content 
      public Dimension getPreferredSize() { 
       return new Dimension(320, 240); 
      } 

     }); 
     f.pack(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); 
     Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); 
     int x = (int) rect.getMaxX() - f.getWidth(); 
     int y = (int) rect.getMaxY() - f.getHeight(); 
     f.setLocation(x, y); 
     f.setVisible(true); 
    } 

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

      @Override 
      public void run() { 
       new LowerRightFrame().display(); 
      } 
     }); 
    } 
} 
3

मुझे पता है कि सबसे आसान तरीका जेपीनेल को अपने स्वयं के लेआउट मैनेजर का उपयोग करके घोंसला करना है।

  • मुख्य JPanel एक BorderLayout
  • एक और JPanel कि BorderLayout.SOUTH की स्थिति में मुख्य में जोड़ा जाता है भी BorderLayout का उपयोग करता है का प्रयोग करेंगे।
  • एसई कोने में जाने वाले घटक को उपरोक्त जेपीनेल में BorderLayout.EAST स्थिति में जोड़ा गया है।
  • सामान्य रूप से, आप घटकों की पूर्ण स्थिति सेट करने की कोशिश कर रहे लेआउट प्रबंधकों बनाम बनाम लगभग हमेशा बेहतर होते हैं।
+0

हाँ! मैं जेफ्रेम सेट करना चाहता हूं। गलतफहमी के लिए माफी! लेकिन पाल की कोशिश करने के लिए धन्यवाद! – Isuru

+0

जेडके 1.4+ के लिए, 'BorderLayout.SOUTH' और' BorderLayout.EAST' 'का संदर्भ देने के लिए केवल' BorderLayout.EAST' और 'BorderLayout.PE_ENDART' का उपयोग करना होगा, जैसा कि [BorderLayout ट्यूटोरियल द्वारा संदर्भित किया गया है) ] (http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html) :-) –

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