2012-07-30 12 views
5

Ten przykład kompiluje się dobrze. I możesz to zobaczyć po uruchomieniu, problem, przed którym stoję. Chcę, aby JPanels malował bezpośrednio na pulpicie, bez widocznego panelu treści JWindow. Potrzebuję również JScrollpane, aby był widoczny, aby przesuwać się w układzie JPanel w poziomie!Java: jak sprawić, by tło kontenera Jscrollpane nie było nieprzejrzyste? (przezroczysty)

Doceń każdą pomoc.

/* 
* SSCE.java 
* Short Self Contained Example 
* 
* Problem: Cant make the containers scrollpane non-opaque! (ie. transparent) 
*/ 
package fb; 

import com.sun.awt.AWTUtilities; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.Toolkit; 
import javax.swing.BorderFactory; 
import javax.swing.JEditorPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JWindow; 
import javax.swing.ScrollPaneConstants; 

/** 
* 
* @author Aubrey 
*/ 
public class SSCE { 
    JWindow w = new JWindow(); 
    Container c = w.getContentPane(); 
    JPanel[] ps; 
    Toolkit toolkit = Toolkit.getDefaultToolkit(); 
    Dimension dim = toolkit.getScreenSize(); 
    int width = dim.width; 
    int height= dim.height; 

    public SSCE(){ 
    c.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 5)); 

    JScrollPane scrollPane = new JScrollPane(c); 
    scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); 
    scrollPane.setOpaque(false); 
    ps = new JPanel[19]; 

    for(int i=0; i<19; i++){ 
    ps[i]=new JPanel(); 
    ps[i].setLocation(0, 0); 
    ps[i].setSize(400, 400); 
    ps[i].setVisible(true); 
    JEditorPane area = new JEditorPane(); 
    area.setEditable(false); 
    area.setOpaque(false); 
    area.setSize(400, 400); 
    area.setForeground(Color.WHITE); 

    area.setText("Date: \nFrom: \n\nMessage: "+i); 

    ps[i].add(area); 
    ps[i].setBorder(BorderFactory.createLineBorder(Color.GRAY)); 
    ps[i].setBackground(Color.darkGray); 
    c.add(ps[i]); 

    } 
    if (AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT)) { 
System.out.println("TranslucencySupported !!!!"); 
AWTUtilities.setWindowOpaque(w, false); 

}else{System.out.println("Translucency NOT Supported !!!!");} 

    //Problem seems to be here --> either the scrollPane or the Container is not non-opaque (ie. transparent)! HOW TO FIX THIS?? 
    w.setContentPane(scrollPane); 
    w.setLocation(0,height-490); 
    w.setSize(width, 450); 

    w.setVisible(true);     
} 
    public static void main(String[] args){ 

     new SSCE(); 
    }} 
+0

+1 do [sscce] (http://sscce.org/). – trashgod

Odpowiedz

13

Spróbować:

scrollPane.getViewport().setOpaque(false); 
    scrollPane.setBorder(null); 
+0

Ahhhhhh ----- Nice One !!!! Działa jak magia teraz :))))))))) – aubreybourke

+0

@aubreybourke, to niesamowite, może chciałbyś pokazać swoją aplikację, zaznaczając pytanie jako odpowiedziano, aby Xon mógł ożywić uznanie, na jakie zasługuje;) – MadProgrammer

+0

@aubreybourke: There's powiązany przykład [tutaj] (http://stackoverflow.com/a/3518047/230513). Możesz zaakceptować tę odpowiedź, klikając przycisk [pusty znacznik wyboru] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) po lewej stronie. – trashgod

Powiązane problemy