java - How do I make a JFrame transparent / Opaque without having to setUndecorated(true) -


  1. is there way can set jframe transparent while still leaving buttons / text unaffected?
  2. if not, how can make jframe transparent without using .setundecorated(true)?
  3. this totally different question, how go adding gradient background color instead of having set 1 solid color?
  4. click here see jframe looks when program runs!

 class playagain extends jpanel {     private jframe nextframe;     public playagain()     {         nextframe = new jframe("tic-tac-toe");         nextframe.setsize(250,125);         nextframe.setdefaultcloseoperation(jframe.exit_on_close);          jpanel panel = new jpanel(new gridbaglayout());         nextframe.add(panel);          gridbagconstraints c = new gridbagconstraints();         c.insets = new insets(10,10,10,10);          class buttonlistener implements actionlistener         {             public void actionperformed(actionevent event)             {                 nextframe.dispose();                 frame.dispose();                 xoroframegrid obj = new xoroframegrid();             }         }          class clickno implements actionlistener         {             public void actionperformed(actionevent event)             {                 frame.dispose();                 nextframe.dispose();             }         }          //creating buttons & labels         jlabel wlt;         c.gridx = 0;         c.gridy = 0;         c.gridwidth = 3;          jlabel title = new jlabel("would play again?");         if (iswin() == 1)         {             wlt = new jlabel("you won!");             panel.add(wlt,c);         }         else if (iswin() == 2)         {             wlt = new jlabel("you lost!");             panel.add(wlt,c);         }         else if (iswin() == 3)         {             wlt = new jlabel("you tied!");             panel.add(wlt,c);         }         jlabel or = new jlabel("or");          jbutton yes = new jbutton("yes");         actionlistener listener1 = new buttonlistener();         yes.addactionlistener(listener1);          jbutton no = new jbutton("no");         actionlistener listener2 = new clickno();         no.addactionlistener(listener2);          c.gridwidth = 0;         //1st column          c.anchor = gridbagconstraints.line_end;         c.weighty = 10;         c.gridx = 0;         c.gridy = 2;         panel.add(no,c);          //2nd column          //adds "or"         c.anchor = gridbagconstraints.center;         c.gridx = 1;         c.gridy = 2;         panel.add(or,c);          //adds title         c.weighty = 0;         c.gridwidth = 3;         c.gridx = 0;         c.gridy = 1;         panel.add(title,c);          //3rd column         c.gridwidth = 0;         c.weighty = 3; // changes weight         c.anchor = gridbagconstraints.line_start;         c.gridx = 2;         c.gridy = 2;         panel.add(yes,c);          nextframe.pack();         nextframe.setlocationrelativeto(null);         nextframe.setresizable(false);         nextframe.setvisible(true);         nextframe.tofront();     } 

here source code transparent jframe:

public class example extends jframe {     public example() {         super("translucentwindowdemo");         setlayout(new gridbaglayout());         setsize(500,300);         setlocationrelativeto(null);         setundecorated(true);         getcontentpane().setbackground(color.blue);          jbutton close = new jbutton("close");         add(close);         actionlistener al;         al = new actionlistener() {             @override             public void actionperformed(actionevent ae) {                 system.exit(0);             }         };         close.addactionlistener (al);     }      private void initcomponents() {         setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);          grouplayout layout = new grouplayout(getcontentpane());         getcontentpane().setlayout(layout);         layout.sethorizontalgroup(             layout.createparallelgroup(grouplayout.alignment.leading)             .addgap(0, 400, short.max_value)         );         layout.setverticalgroup(             layout.createparallelgroup(grouplayout.alignment.leading)             .addgap(0, 300, short.max_value)         );         pack();     }                           public static void main(string args[]) {        graphicsenvironment ge = graphicsenvironment.getlocalgraphicsenvironment();        graphicsdevice gd = ge.getdefaultscreendevice();          if (!gd.iswindowtranslucencysupported(translucent)) {             system.err.println("translucency not supported");             system.exit(0);          }         try {             (uimanager.lookandfeelinfo info : uimanager.getinstalledlookandfeels()) {                 if ("nimbus".equals(info.getname())) {                     uimanager.setlookandfeel(info.getclassname());                     break;                 }             }         } catch (classnotfoundexception | instantiationexception | illegalaccessexception | javax.swing.unsupportedlookandfeelexception ex) {              java.util.logging.logger.getlogger(example.class.getname()).log(java.util.logging.level.severe, null, ex);         }          java.awt.eventqueue.invokelater(new runnable() {             public void run() {                 example e = new example();                 e.setopacity(0.55f);                 e.setvisible(true);             }         });     }          } 

Comments