2011-05-07 21 views
15

मैं जावा का उपयोग कर सांप गेम विकसित कर रहा हूं। बोर्ड (जहां सभी कार्यवाही होती है) चौड़ाई और ऊंचाई तय की जानी चाहिए (640 पिक्सल * 480 पिक्सल)।जेपीनल की चौड़ाई और ऊंचाई कैसे सेट करें?

संरचना:

  • मुख्य वर्ग कि JFrame वर्ग से फैली हुई है,
  • बोर्ड वर्ग कि से JPanel वर्ग फैली

मुख्य कक्षा में मैं कुछ की तरह ...

setSize(1024, 768); 

... और बोर्ड कक्षा मैं में ...

setSize(BOARDS_WIDTH, BOARDS_HEIGHT); 

समस्या है कि मुख्य और केवल है खिड़कियां 1024 * 768 की तरह लगती हैं, लेकिन इसके अंदर पैनल - 640 * 480 की तरह नहीं। मेरे पास सेटबैकग्राउंड() भी है और पृष्ठभूमि 640 * 480 से अधिक भरी है।

क्या बोर्ड की चौड़ाई और ऊंचाई 640 * 480 की तरह बनाने का कोई तरीका है, लेकिन मुख्य खिड़कियां चौड़ाई और ऊंचाई - जितनी बोर्ड की चौड़ाई और ऊंचाई सही है?

अभी यह इस तरह दिखता है ...

Width and height are ~1000 * ~750, not 640 * 480.

संपादित करें:

सभी काम करता है ... लगभग।

मुख्य वर्ग:

add(new Board(), BorderLayout.CENTER); 
pack(); 
setResizable(false); 
setLocationRelativeTo(null); 
setVisible(true); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
setTitle("Snake (by daGrevis)"); 

बोर्ड वर्ग:

setPreferredSize(new Dimension(640, 480)); 

ग्रे पृष्ठभूमि 642 * 482 है! जैसा कि सीमा होगी जो सभी को 1 पिक्सेल से लपेटती है!

+0

अतिरिक्त कार्यक्षमताओं को जोड़ने तक आमतौर पर घटकों को विस्तारित करना आवश्यक नहीं है (उदा। नई विधियां)। –

+0

इसे मेरे दिमाग में रखेगा। मैं जावा में सिर्फ नौसिखिया हूँ! – daGrevis

+2

जो पहले से ही पेशकश की जा चुकी है उससे परे मदद के लिए (किसी ऐसे व्यक्ति द्वारा जिसे मैं 'स्विंग के गुरु' के रूप में मानता हूं), मेरा सुझाव है कि आप एक [एसएससीसीई] (http://pscode.org/sscce.html) पोस्ट करें। –

उत्तर

9

कृपया, कोई त्रुटि हुई x एक्स x * x, और कहा कि, बिल्कुल सच नहीं है जाँच करें कि

JButton Size - java.awt.Dimension[width=400,height=40] 
JPanel Size - java.awt.Dimension[width=640,height=480] 
JFrame Size - java.awt.Dimension[width=646,height=505] 

कोड (Trail: Creating a GUI With JFC/Swing से बुनियादी सामान, और अभी तक मैं अभी भी संतुष्ट हैं कि होता है कि पुराना हो)

संपादित करें: भूल setDefaultCloseOperation()

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class FrameSize { 

    private JFrame frm = new JFrame(); 
    private JPanel pnl = new JPanel(); 
    private JButton btn = new JButton("Get ScreenSize for JComponents"); 

    public FrameSize() { 
     btn.setPreferredSize(new Dimension(400, 40)); 
     btn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println("JButton Size - " + btn.getSize()); 
       System.out.println("JPanel Size - " + pnl.getSize()); 
       System.out.println("JFrame Size - " + frm.getSize()); 
      } 
     }); 
     pnl.setPreferredSize(new Dimension(640, 480)); 
     pnl.add(btn, BorderLayout.SOUTH); 
     frm.add(pnl, BorderLayout.CENTER); 
     frm.setLocation(150, 100); 
     frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT 
     frm.setResizable(false); 
     frm.pack(); 
     frm.setVisible(true); 
    } 

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

      @Override 
      public void run() { 
       FrameSize fS = new FrameSize(); 
      } 
     }); 
    } 
} 
+0

-1 के लिए – kleopatra

+0

के लिए setXXSize – daGrevis

6
Board.setPreferredSize(new Dimension(x, y)); 
. 
. 
//Main.add(Board, BorderLayout.CENTER); 
Main.add(Board, BorderLayout.CENTER); 
Main.setLocations(x, y); 
Main.pack(); 
Main.setVisible(true); 
+2

यूप, +1, लेकिन मैंने सेट लोकेशन का उपयोग नहीं किया है - शायद एस एक टाइपो है। जीयूआई केंद्र में पैक करने के बाद भी मैं कभी-कभी setLocationRelativeTo (null) को कॉल करता हूं। –

+0

धन्यवाद, मेरे लिए काम किया। बस 'बॉर्डरलेआउट' 'सीमावर्ती' होना चाहिए। – daGrevis

+1

@ दाग्रेविस, धन्यवाद कि मेरा अंतर्निर्मित हेड जावा है .... – mKorbel

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