java - paintComponent () never executes on a JFrame -
आयात करें javax.swing.SwingUtilities; आयात javax.swing.JFrame; आयात javax.swing.JPanel; आयात javax.swing.BorderFactory; आयात करें java.awt.Color; आयात करें java.awt.Dimension; आयात java.awt.Graphics; Import java.awt। *; आयात करें java.awt.event.MouseEvent; आयात करें java.awt.event.MouseListener; आयात करें java.awt.event.MouseAdapter; आयात करें java.awt.event.MouseMotionListener; आयात करें java.awt.event.MouseMotionAdapter; Import java.awt.geom। *; Import java.util। *; पब्लिक क्लास टेस्ट 1 जेफ्रेम लागू करता है माउस लेस्टनर {निजी जेपीनल जेपी = नया जेपीनल (); सार्वजनिक टेस्ट 1 () {जेपी। सेटबॉर्डर (बॉर्डरफैक्चर। कंटेंट लाइन्स बॉर्डर (कलर। ब्लैक)); JP.addMouseListener (this); this.setDefaultCloseOperation (this.EXIT_ON_CLOSE); this.add (जेपी); this.pack (); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] एल्ग्स) {जावा.एवीटी.एवेंट्यूयुयु.इन्वेल्लेटर (नया रननाबल () (सार्वजनिक शून्य रहित) {test1 फ्रेम = नया टेस्ट 1 (); फ़्रेम.सेटसिज़ (400,400), फ्रेम.सेस्वियबल ( सच); } }); } सार्वजनिक शून्य माउस चूल्हे (माउसईवेंट ई) {// ड्रॉचार्कल (ई.ए.टी.ए.एक्स), ई.जी.ए.टी.इ. ()); // रीपेंट (); बॉलबॉल बॉल; गेंद = नया बॉलबॉल (); //ball.paintComponent (ग्राफिक्स जी); Println ( "ballball"); } सार्वजनिक शून्य माउसएक्सित (माउसईवर्त ई) {} सार्वजनिक शून्य माउस माउस दबाया गया (माउसईवर्त ई) {//this.mouseX=e.getX (); //this.mouseY=e.getY (); } सार्वजनिक शून्य माउस रीलीज़ेड (माउसईवर्त ई) {} सार्वजनिक शून्य माउसईंटर्ड (माउसईवर्त ई) {}}
वर्ग बॉलबॉल परीक्षण 1 औजार बढ़ाता है Runnable {निजी int squareX = 50; निजी पूर्णांक वर्ग एस = 50; निजी पूर्णांक वर्गव्यू = 100; निजी पूर्णांक वर्ग एच = 100; सार्वजनिक बूलियन ड्रा; निजी वेक्टर & lt; ऑब्जेक्ट & gt; V = नया वेक्टर & lt; ऑब्जेक्ट & gt; (); सार्वजनिक बॉलबॉल () {/ * addMouseListener (नया माउस एडाप्टर () {सार्वजनिक शून्य माउस माउस दबाया गया है (माउसईवर्त ई) {ड्रॉ = सच्चा; // थ्रेड धागा 1 = नया थ्रेड (यह.मॉव्स्क्वेयर (50, 50)); repaint (); // लेफ्ट स्क्वायर (ई.ए.टी.ए.टी.ए.), ई.जी.टी.ए. ());}}); * / / * एडेमॉसमोशनलाइस्टनर (नया माउस एडाप्टर) (सार्वजनिक वाइड माउसड्रागैग (माउसईवर्त ई) {लेक्स्क्वेयर (ई.टी.टी.एक्स), ई.जी.ए. ));}}); * / System.out.println ("गेंद बनाई"); this.repaint (); } सार्वजनिक शून्य रन () {} निजी शून्य कदम स्विच (int x, int y) {int OFFSET = 1; अगर ((वर्गएक्स! = एक्स) || (स्क्वायर वाई! = वाई)) {रंगना (चौकोर एक्स, स्क्वीयर, स्क्वाडव + ऑफसेट, स्क्वायर एच + ऑफसेट); squareX = एक्स; squareY = y; फिर से रंगना (squareX, squareY, squareW + OFFSET, squareH + OFFSET); }} सार्वजनिक शून्य रंग (ग्राफिक्स जी) {g.drawString ("abcasdfasffasfas", 10, 10); } // @ ओवरराइड पब्लिक वॉयड पेंट कॉमोनेंट (ग्राफ़िक्स जी) {// if (ड्रॉ) {// मौजूदा कोड सिस्टम। आउट.प्रिंटएलएन ("पेंट"); //super.paintComponent(g); //g.drawString ("यह मेरा कस्टम पैनल है!", 10,20); //g.setColor(Color.RED); //g.fillRect(squareX,squareY,squareW,squareH); //g.setColor(Color.BLACK); //g.drawRect(squareX,squareY,squareW,squareH); आकार चक्र = नया अंडाकार 2 डी। फ्लोट (वर्गएक्स, स्क्वीयर, 100 एफ, 100 एफ); ग्राफिक्स 2 डी जीए = (ग्राफिक्स 2 डी) जी; ga.draw (चक्र); //}}}
इस कार्यक्रम का उद्देश्य सर्कल बनाने के लिए क्लिक करना है, बॉलबॉल वर्ग में टेस्ट 1 का विस्तार किया जाता है, जब टेस्ट 1 माउस क्लिक का पता लगाता है, बॉलबॉल ऑब्जेक्ट बनाया जाता है। लेकिन पेंट / पेंट कॉमोनेंट विधि को कभी भी निष्पादित नहीं किया जा सकता है। मेरे कार्यक्रम की संरचना में, क्या सर्कल को सुपर क्लास जेपीनल को पेंट करना संभव है?
JFrame
एक JComponent
नहीं है, इसमें कोई भी paintComponent
विधि नहीं है जिसे आप ओवरराइड कर सकते हैं इसके बजाय आप JPanel
का विस्तार कर सकते हैं और इसे फ्रेम में जोड़ सकते हैं।
Comments
Post a Comment