2016-05-02 15 views
-1

ich habe meine JPanel haben:Wie trasparance Panel mit RemoveAll()

private int status = 0; 
public serietv() { 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 848, 566); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 


JPanel labelpanel = new JPanel(); //labelpanel is my problem 
    labelpanel.setBounds(92, 329, 625, 128); 
    contentPane.add(labelpanel); 
    labelpanel.setLayout(null); 

    //here my label go transparent 
    Color c=new Color(200,0,0,20); 
    labelpanel.setBackground(c); 
    labelpanel.setOpaque(true); 


    JLabel[] labelapp = new JLabel[1000]; //create an arrayJLabel for my images 

mit diesem Code mein Panel transparent wird mit rotem transparentem Hintergrund wie folgt aus: when i DONT click "Succ"

, aber wenn ich auf JLabel klicken "succ":

JLabel succ = new JLabel(""); 
    succ.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 
    succ.setBounds(727, 350, 82, 79); 
    contentPane.add(succ); 

succ.addMouseListener(new MouseAdapter() { 
@Override 
     public void mousePressed(MouseEvent f) { 

      int x = 0; 

    int i = 0; 
    labelpanel.removeAll(); 

      try { 

       for (i = status; i < status + 5; i++) { 

        RidimIcon locand = new RidimIcon(); 
        labelapp[i].setBounds(30 + x, 15, 90, 100); 
        Border border = BorderFactory.createLineBorder(Color.BLACK, 3); 
        labelapp[i].setBorder(border); 
        labelapp[i].setIcon(locand.newicona(pathicon[i],labelapp[i])); 
        labelpanel.add(labelapp[i]); 


        x = x + 120; 
       } 
       status = i; 

       labelpanel.revalidate(); 
       labelpanel.repaint(); 


      } catch (NullPointerException e) { 

    labelpanel.revalidate(); 
       labelpanel.repaint(); 
       appoggio = i - status; 
       status = i - appoggio; 
       } 
     } 
    }); 

dies mein ridimIcon ist: public class ridimIcon {

ImageIcon image; 
Image im; 
Image myImg; 
ImageIcon newImage; 
int i=0; 
public ImageIcon newicona (String img, JLabel lb){ 



    image = new ImageIcon(img); 
    im = image.getImage(); 
    myImg = im.getScaledInstance(lb.getWidth(), lb.getHeight(), Image.SCALE_SMOOTH); 
    newImage = new ImageIcon(myImg); 


    return newImage; 

    } 

} meine Platte wieder in den normalen, nicht transparent .. wie folgt aus: when i click succ ich brauche alle Komponenten zu entfernen, aber nicht die Transparenz entfernen .. wie kann ich es beheben?

+0

1) Um eine bessere Hilfe zu erhalten, geben Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) ein. 2) Java-GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgrößen, Bildschirmauflösungen usw. mit verschiedenen PLAFs in verschiedenen Locales arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). .. –

+0

.. 3) Anstatt Komponenten zu entfernen und hinzuzufügen, verwenden Sie ein ['CardLayout'] (http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html) wie gezeigt in [dieser Antwort] (http://stackoverflow.com/a/5786005/418556). 4) Verwenden Sie eine logische und konsistente Form der Einrückung von Codezeilen und -blöcken. Die Einrückung soll den Codefluss leichter nachvollziehen lassen! –

+0

Kannst du mir ein Beispiel mit meinem Code zeigen? –

Antwort

2

Swing weiß nicht, wie man transparente Hintergründe malt, so dass Sie die Hintergrundbemalung selbst verwalten müssen.

Check out Backgrounds With Transparency für weitere Informationen und zwei Lösungen:

  1. Sie das Bild Ihrer Komponente fertigen Sie den Hintergrund
  2. verwenden, um eine Wrapper-Komponente zu malen den Hintergrund zu malen.
+0

ich male meine Komponente, aber wenn ich 'labelpanel.removeAll();' meine Transparenz gehen weg und ich sehe nur grünen Hintergrund .. wenn ich nicht auf "succ" klicken mein Labelpanel ist transparent –

+1

@FrancescoPioBocci, nicht sicher, was Sie meinen ist. Swing unterstützt keine Transparenz. Sie haben zwei Lösungen erhalten. Sie wurden auch gebeten, eine ordnungsgemäße SSSCE oder MCVE zu veröffentlichen, um das Problem zu demonstrieren, wenn Sie weitere Hilfe benötigen. – camickr

+0

Ich poste 2 Bildschirm in meiner Frage –