2010-08-25 10 views
14

में अस्पष्टता सेट करें मान लें कि मैं एक जेपीनेल% 20 की अस्पष्टता बनाना चाहता हूं? मेरा मतलब यह नहीं है कि सेटऑपाक (ड्रॉ या ड्रा नहीं) या सेट विज़िबल (शो या छुपाएं) ... मेरा मतलब है कि इसे जेपीनल के माध्यम से देखें .. आपको पता है?जावा - जेपीनल

क्या यह संभव है?

+0

उनकी वर्तमान प्रश्न के सही शब्दों में है, लेकिन वह कहा है अतीत में एक बहुत ही समान प्रश्न जिसमें उन्होंने एक उत्तर (संदर्भ के लिए) भी स्वीकार किया: http://stackoverflow.com/questions/3517722/java-transparent-jscrollpane – Serplat

+0

हाँ, जो मेरे लिए काम नहीं करता था। :( – nn2

+2

यदि आप समझते हैं कि क्या काम नहीं करता है तो मैं आपकी सहायता करूंगा। – trashgod

उत्तर

20
panel.setBackground(new Color(r, g, b, a)); 

तुम भी Backgrounds With Transparency पर देखने के किसी भी पेंटिंग समस्याओं को आप हो सकता है जब आप इस का उपयोग को समझने के लिए करना चाहिए।

+4

"ए" अल्फा सेटिंग है जो एक अस्पष्टता है। –

+0

सही, विधि के लिए पैरामीटर का पूर्ण विवरण प्राप्त करने के लिए आप रंग वर्ग के लिए एपीआई भी पढ़ सकते हैं। – camickr

+0

धन्यवाद। मैं कहना चाहता हूं कि मुझे खेद है। मुझे और अधिक स्पष्ट होना चाहिए था। – nn2

3
AWTUtilities.setWindowOpacity(aWindow, aFloat); 

जहां एविंडो स्विंग घटक है, और एफ़्लोट अस्पष्टता है।

+3

क्षमा करें, मैं पालन नहीं करता हूं।मैं एक खिड़की अस्पष्टता नहीं चाहता लेकिन जेपीनेल अस्पष्टता। : डी – nn2

+0

मैं जेएफआरएएम का उपयोग करता हूं और यह अच्छी तरह से काम करता है। AWTUtilities.setWindowOpacity (फ्रेम, (फ्लोट) 0.7); – janetsmith

+0

ठीक है, लेकिन पृष्ठभूमि छवि को चित्रित करने वाले जेपीनल के साथ ऐसा करने के लिए कैसे करें (छवि के माध्यम से देखने के लिए)? – Benj

0

पेंट के अंदर पेंट कॉम्पोनेंट विधि को पेंट करने के लिए जेपीनेल के पेंट कॉम्पोनेंट विधि को ओवरराइड करने के लिए (पेंट कॉम्पोनेंट के लिए आपको अपने स्वयं के पेंट कॉम्पोनेंट विधि को उप-वर्ग करना होगा), आप घटक से बफर्ड छवि पुनर्प्राप्त कर सकते हैं, वहां से buffered छवि के अल्फा में हेरफेर कर सकते हैं और इसे वापस जेपीनेल में पेंट कर सकते हैं। मैंने बहुत समय पहले लाल किया है। अभी भी कोड की तलाश है।

13

रंग के लिए अल्फा विशेषता का उपयोग करें।

उदाहरण के लिए:

panel.setBackground(new Color(0,0,0,64)); 

अल्फा के 64 (पारदर्शिता)

इस में परिणामस्वरूप के साथ, एक काले रंग बना देगा:

sample

यहाँ कोड

है
package test; 

import javax.swing.*; 
import java.awt.Color; 
import java.awt.BorderLayout; 

public class See { 
    public static void main(String [] args){ 
     JFrame frame = new JFrame(); 
     frame.setBackground(Color.orange); 


     frame.add(new JPanel(){{ 
         add(new JLabel("Center")); 
         setBackground(new Color(0,0,0,64)); 
        }} , BorderLayout.CENTER); 
     frame.add(new JLabel("North"), BorderLayout.NORTH); 
     frame.add(new JLabel("South"), BorderLayout.SOUTH); 

     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

बाहर के साथ यह यह इस तरह दिखता है:

setBackground(new Color(0,0,0) ); // or setBackground(Color.black); 

alt text

+0

बहुत अच्छा - अच्छी तरह से काम किया !!! – nn2

+0

मुझे खुशी है, क्या आपने विंडोज़ में इसका परीक्षण किया था? – OscarRyz

+0

क्या यह छवियों के साथ भी संभव है? –

0

यह विंडोज़ 7.

panel.setBackground(new Color(r, g, b, a)); 

अल्फ़ा चैनल सिर्फ रंग वज़न पर इतनी अच्छी तरह से काम नहीं करता।

जब अल्फा चैनल वाले रंग पर कोई तत्व अपडेट किया जाता है, तो कंप्यूटर भ्रमित हो जाता है और अल्फा के बिना अद्यतन तत्व की पृष्ठभूमि को रीसेट करता है। मैं कोशिश कर रहा हूं

AWTUtilities.setWindowOpacity(aWindow, aFloat); 

अगला।

0

आप एक कस्टम पैनल है और अर्द्ध पारदर्शी होने के लिए पूरी बात चाहते हैं, मैं आपको सलाह इस तरह इसकी विधि paintComponent ओवरराइड करने के लिए:

@Override 
    protected void paintComponent(Graphics graphics) { 
     super.paintComponent(graphics); 
     Graphics2D g2d = (Graphics2D) graphics; 
     g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); 
    } 
संबंधित मुद्दे