जावा में कर्सर के आसपास पीला सर्कल

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

मौजूदा छवियों का उपयोग किये बिना मैं इसे कैसे कर सकता हूं? कुछ अस्पष्टता के साथ एक साधारण पीले रंग का सर्कल बनाना स्क्रीन पर माउस का पालन करने के लिए सबसे आसान काम होगा। और, यदि उपयोगकर्ता इसे माउस-बटन पर क्लिक करता है तो यह गायब हो जाता है और फिर से दिखाई देता है, जो कि कमाल होगा।

0
जोड़ा संपादित
विचारों: 1
क्या आपने हल खोज लिया ?
जोड़ा लेखक coding_idiot, स्रोत
@ michael667 ठीक है, क्योंकि मुझे वास्तविक कर्सर को बदलने के अलावा कुछ भी नहीं मिला है, वास्तव में कुछ करने का प्रयास करना मुश्किल है। मुझे यह कैसे करना है इस पर कोई वास्तविक उदाहरण या सिद्धांत नहीं मिला है। और मेरा जावा-ज्ञान या तो उन्नत नहीं है। मैं आमतौर पर वेबसाइट विकसित करता हूं।
जोड़ा लेखक Nemo Caligo, स्रोत
@Subs यदि आपका मतलब स्विंग है, तो हाँ, भले ही मुझे यकीन नहीं है कि इससे मुझे यह पता लगाने में मदद मिलेगी कि कर्सर को और अधिक दृश्यमान बनाने के लिए किस वर्ग का उपयोग करना है। बात यह है कि जावा स्विंग लाइब्रेरी बहुत बड़ी है। मेरा मतलब है, माउस-श्रोताओं को ढूंढना बहुत आसान है .. लेकिन यह समझना मुश्किल है कि माउस के चारों ओर एक सर्कल कैसे बनाया जाए।
जोड़ा लेखक Nemo Caligo, स्रोत
@Sub, यह सच है, हालांकि, मुझे अभी भी यकीन नहीं है कि पैनल हमेशा माउस का पालन कैसे करें। साथ ही, मुझे यकीन नहीं है कि यह जावास्क्रिप्ट में काम कर सकता है, कि आप माउसमोव ईवेंट लेते हैं और उस पैनल की एक्स | वाई स्थिति बदलते हैं, माउस के x | y निर्देशांक प्राप्त करें और पैनल केंद्र x | y स्थिति बनाएं माउस एक्स | वाई स्थिति के लिए छड़ी। यदि यह काम करता है, तो क्या यह एप्लिकेशन का उपयोग कर कंप्यूटर पर भी मांग करेगा, या उपयोगकर्ता किसी भी देरी से आवेदन नोटिस का उपयोग नहीं करेगा? यह सभी सिद्धांत हैं, और यहां तक ​​कि यदि मुझे पता है कि सिद्धांत में इसे कैसे किया जाए, तो मुझे कोड में इसे बनाने के बारे म
जोड़ा लेखक Nemo Caligo, स्रोत
हाँ, नीचे जवाब की जांच करें। यह करने का सबसे आसान तरीका था।
जोड़ा लेखक Nemo Caligo, स्रोत
क्या आपने <�कोड> स्विंग के बारे में सुना है?
जोड़ा लेखक Subs, स्रोत
@NanashiDri, यदि आप जानते हैं तो आपको यह पता लगाना चाहिए था कि आप शीर्ष परत के रूप में एक पारदर्शी पैनल डाल सकते हैं और माउस पॉइंटर स्थिति से एक सर्कल खींच सकते हैं और जब आप ( mousePressed ) पर क्लिक करते हैं - पारदर्शी को छुपाएं पैनल ताकि अब आपका बैक (मुख्य) पैनल आपके mousereleased ईवेंट लेता है।
जोड़ा लेखक Subs, स्रोत

2 उत्तर

मौजूदा माउस पॉइंटर के चारों ओर एक सर्कल जोड़ना संभव नहीं है। आप केवल माउस पॉइंटर को एक पूर्ण छवि पर सेट कर सकते हैं।

0
जोड़ा
आपके उत्तर के लिए धन्यवाद, लेकिन मुझे डर है कि यह समाधान नहीं है। अगर मुझे खोज करते समय कोई जवाब मिले, तो मैंने यहां नहीं पूछा होता। समस्या यह है कि मैं माउस कर्सर को पूरी तरह से बदलना नहीं चाहता हूं। मैं बस इसके चारों ओर एक पीला सर्कल बनाना चाहता हूँ। और मेरा सवाल यह था कि छवियों का उपयोग किए बिना यह संभव है।
जोड़ा लेखक Nemo Caligo, स्रोत
समझ गया। जवाब के लिए धन्यवाद। मैं आपके उत्तर को इस प्रश्न के उत्तर के रूप में चिह्नित करूंगा क्योंकि मुझे नहीं लगता कि टिप्पणियों को स्वीकार किए गए उत्तरों के रूप में चिह्नित करना संभव है।
जोड़ा लेखक Nemo Caligo, स्रोत
मौजूदा माउस पॉइंटर के चारों ओर एक सर्कल जोड़ना संभव नहीं है। आप केवल माउस पॉइंटर को एक पूर्ण छवि पर सेट कर सकते हैं।
जोड़ा लेखक michael667, स्रोत

MouseMotionListener को अपने घटक में जोड़कर ऐसा करना संभव है, लेकिन यह ठीक से काम करने के लिए थोड़ा सा काम करेगा कि आप इसे कैसे चाहते हैं।

मैं इस तरह से कुछ शुरू करूंगा:

private static final double RADIUS    = 15.0;
private static final double DIAMETER  = 2.0 * RADIUS;
private static final Color  XOR_COLOR = Color.yellow;

private static Shape m_circle = null;

@Override
public void mouseMoved(MouseEvent e)
{
    Graphics2D g2     = (Graphics2D) getGraphics();
    Point      p      = e.getPoint();
    Shape      circle = new Ellipse2D.Double(p.getX() - RADIUS, p.getY() - RADIUS, DIAMETER, DIAMETER);

    clearCircle(g2);

    g2.setXORMode(XOR_COLOR);
    g2.draw(circle);
    g2.setPaintMode();

    m_circle = circle;
}

private void clearCircle(Graphics2D g2)
{
    if (m_circle != null)
    {
        g2.setXORMode(XOR_COLOR);
        g2.draw(m_circle);
        g2.setPaintMode();

        m_circle = null;
    }
}

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

एक्सओआर का उपयोग करना सुविधाजनक है क्योंकि स्क्रीन को उसी रंग और शैली के साथ उसी आकार को पुनर्स्थापित करके स्क्रीन को पुनर्स्थापित करना बहुत आसान है, लेकिन यह काफी नहीं है जिसे आपने पूछा था। उस क्षेत्र की एक छवि को कैप्चर करके स्क्रीन को सुधारना संभव है जिसे आप सर्कल को आकर्षित करने वाले हैं। सर्कल को एक नई स्थिति में चित्रित करने से पहले क्षतिग्रस्त क्षेत्र को पुनर्स्थापित करके स्क्रीन से सर्कल को हटाया जा सकता है।

0
जोड़ा
getGraphics() यह कहां से आता है?
जोड़ा लेखक coding_idiot, स्रोत
क्या आप एक पूर्ण कामकाजी उदाहरण पोस्ट कर सकते हैं? मैंने कुछ करने की कोशिश की लेकिन यह काम नहीं किया।
जोड़ा लेखक coding_idiot, स्रोत
getGraphics() मूल रूप से java.awt.Component से आता है लेकिन इस कोड को एक उप-वर्ग की आवश्यकता होती है जो एक ग्राफिक्स 2 डी उदाहरण देता है, जैसे javax.swing.JComponent
जोड़ा लेखक richj, स्रोत
मेरे उत्तर में कोड MouseMotionListener को लागू करने वाली कक्षा के लिए माउसमाइड (...) का कार्यान्वयन है। यदि आपको एक पूर्ण कार्य उदाहरण जावा एप्लिकेशन की आवश्यकता है, तो यह जावा ट्यूटोरियल एक अच्छा प्रारंभिक बिंदु प्रदान करता है: docs.oracle.com/javase/tutorial/uiswing/events/… - आप मेरे कोड के साथ माउस के स्टब कार्यान्वयन को प्रतिस्थापित करने में सक्षम होना चाहिए।
जोड़ा लेखक richj, स्रोत