Hoe Latend en gevorm Windows in Java te skep?

Oorsig: In hierdie artikel sal ons gesels oor die deursigtigheid en verskillende gevormde vensters in Java. In Java 7 swing ondersteun hierdie funksie en die maak van swing UI komponente meer buigsaam en gebruikersvriendelik.

Inleiding: In sommige aansoek, deursigtige venster is 'n vereiste om sy funksies te ondersteun. Nou in Java, deursigtigheid geïmplementeer kan word. 'N deursigtige venster is geskep deur die wysiging van die dekking deur die implementering van 'n metode genoem setOpacity op 'n JFrame komponent. Maar ons moet verstaan ​​dat 'n deursigtige venster is slegs moontlik indien die onderliggende bedryfstelsel ondersteun. En ons het ook nodig het om seker te maak dat die venster is nie versier. Om 'n venster onversierde, wat jy nodig het om te bel setUndecorated (ware) metode. 'N geruime tyd is dit ook nodig om die vorm van 'n venster UI te verander. Om dit te implementeer, Ons moet setShape metode te roep in die componentResized metode. Dit sal herbereken die vorm wanneer die venster verklein.

Terug grond: In Java UI, ondersteuning vir translucentie en gevormde venster was 'n lang tyd vraag na Swing / AWT komponente. Vir moedertaal ontwikkeling toegang tot hierdie eiendomme is beskikbaar by lang tyd terug. Maar dit was nie toeganklik vir kern Java komponente. In Java6 af, ondersteuning vir translucentie en gevormde venster is beskikbaar. Selfs per pixel vlak translucentie is ook ondersteun in Java7.

Tipe van ondersteuning vir translucentie en deursigtigheid: Java 7 ondersteun die volgende drie tipe ondersteuning.

DOORLATENDE: In hierdie funksie by die venster kan verskillende kleure, maar met dieselfde vlak van dekking. So die alfa waarde is dieselfde vir al die pixels. Hierdie effek is geskik vir vervaag af 'n venster en dan geleidelik verlaag en verhoog die alfa waarde.

PERPIXEL_TRANSLUCENT: Hierdie eiendom ondersteun verskillende alfa waardes binne die venster self. Dit word gebruik om geselekteerde streek van die venster om te vervaag.

PERPIXEL_TRANSPARENT: Hierdie eiendom ondersteun verskillende vorms van vensters eerder as die tradisionele reghoek. Indien per pixel deursigtigheid word dan ondersteun verskillende vorms soos sirkel, driehoek kan geskep word.

Voordat ons die gebruik van enige van die bogenoemde eiendomme wat ons nodig het om die ondersteuning van te toets onder lê bedryfstelsel. Die toets kan gedoen word deur die gebruik van metode isWindowTranslucencySupported wat deel uitmaak van die java.awt.GraphicsDevice klas. Dit neem die tipe van deursigtigheid as insette en terugkeer waar / onwaar die ondersteuning aan te dui.

Kom ons kyk 'n voorbeeld kode die translucentie funksie te implementeer. In hierdie voorbeeld het ons 'n vierkantige deursigtige venster op 'n teks area. Eerste keer wat ons het afgeskakel versiering af die effek van deursigtigheid te kry. Dan het ons nagegaan indien die onderliggende bedryfstelsel ondersteun word of nie. As ondersteun die effek is sigbaar op die raam venster.

Listing1: Monster wat translucentie van 'n JFrame venster

voer java.awt.Color;

voer java.awt.GraphicsDevice;

voer java.awt.GraphicsEnvironment;

voer java.awt.GridBagLayout;

voer java.awt.event.ComponentAdapter;

voer java.awt.event.ComponentEvent;

voer java.awt.geom.Rectangle2D;

voer javax.swing.JFrame;

voer javax.swing.JTextArea;

voer javax.swing.SwingUtilities;

openbare klas TransRecFrame strek JFrame {

/**

* Skep 'n deursigtige vierkantige raam met 85% deursigtigheid

*/

openbare TransRecFrame() {

super(“Deursigtige raampie”);

//Stel uitleg

setLayout(nuwe GridBagLayout());

//Skep 'n teks area

finale JTextArea txtArea = nuwe JTextArea(5, 50);

txtArea.setBackground(Kleur.SIAAN);

voeg(txtArea);

//Bel versiering te skakel

setUndecorated(ware);

 

//Bel setShape die vorm te verander wanneer widnow geskaleer

addComponentListener(nuwe ComponentAdapter() {

@ Ignoreer

openbare nietig componentResized(ComponentEvent en) {

setShape(nuwe Rectangle2D.Double(0, 0, getWidth(), getHeight()));

}

});

//Maak die venster 85% deursigtige

setOpacity(0.85f);

//Stel ander parameters

setLocationRelativeTo(zero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(ware);

}

openbare statiese nietig hoof(String[] argumente) {

//Skep grafiese omgewing

Youth Venture GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Kyk of OS ondersteun Translucentie

indien (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.DOORLATENDE)) {

System.out.println(“OS ondersteun translucentie”);

nuwe TransRecFrame();

}

}

}

Funksies translucentie en vorm te ondersteun: In Java7 daar is hoofsaaklik drie funksies wat beskikbaar is translucentie en vorm van 'n venster te ondersteun.

  • Volle venster translucentie: In hierdie benadering volle venster is deursigtig.
  • Per pixel translucentie: In hierdie benadering 'n deel van die venster is deursigtig
  • Vormige vensters: Maak verskillende gevormde vensters in soos ovale, sirkel, vierkantige ens.

Per pixel translucentie:

Ons het reeds gesien hoe 'n volledige venster deursigtig te maak in die vorige voorbeeld. Nou sal ons die tweede deel van die maak van 'n stel van pixels deursigtig bespreek word deur die gebruik van hul agtergrond. Daar is 'n paar beperkinge hierdie scenario te implementeer. Die venster moet nie die volle screen en die stelsel moet pixel vlak translucentie ondersteun. Die res van die proses is soortgelyk aan die bogenoemde voorbeeld.

Die res van die proses is soortgelyk aan die bogenoemde voorbeeld.

Listing2: Monster wat pixel vlak translucentie ondersteuning.

voer javax.swing.*;

voer java.awt. *;

voer java.awt.event.ActionEvent;

voer java.awt.event.ActionListener;

openbare klas PixelTranslucency strek JFrame {

openbare PixelTranslucency() {

super(“Stel pixel vlak translucentie”);

//Stel grootte van die JFrame

setSize(250, 250);

//Stel uit te lê

getContentPane().setLayout(nuwe GridLayout(6, 6));

//Bel vir pixel instelling

vir(int i = 0; i &Dit; 16; i ){

voeg(nuwe Pixel paneel(255 – i * 12));

}

//Stel agtergrond en ander eiendomme

setBackground(nuwe Kleur(0, 0, 0, 0));

setLocationRelativeTo(zero);

setVisible(ware);

}

openbare statiese nietig hoof(String[] argumente) {

Youth Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Kyk of venster ondersteun translucentie

indien (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSLUCENT)) {

Stelsel.uit.println(“OS ondersteun translucentie”);

nuwe PixelTranslucency();

}

} private klas Pixel paneel strek JPanel {

private Pixel paneel(int Pixl) {

super();

setBackground(nuwe Kleur(0, 0, 255, Pixl));

}

}

}

Gevormde Windows:

Nou sal ons gesels oor 'n ander belangrike funksie ondersteun deur Java7.The gevormde venster ondersteun alle soorte van vorms wat die vereiste van die gebruiker. Hierdie funksie kan jy enige vorm soos sirkel te skep, driehoek, veelhoek of enige moontlike komplekse vorm. Die setShape metode van die venster klas beskikbaar is vir die opstel van die eiendom. Maar weer het ons moet onthou dat die hele skerm nie toegelaat moet word en die bedryfstelsel ondersteun translucentie.

Die volgende voorbeeld toon die gebruik van gevormde venster.

Listing3: Die voorbeeld kode wat die gebruik van gevormde venster.

voer javax.swing.*;

voer java.awt. *;

voer java.awt.geom.Ellipse2D;

voer java.awt.geom.GeneralPath;

openbare klas JavaShapedWindow strek JFrame {

openbare JavaShapedWindow() {

super(“Stel gevormde venster”);

//Stel onversierde AF 'n effek te kry

setUndecorated(ware);

//Stel grootte

setSize(nuwe Dimension(250, 250));

//Stel veelhoek eiendomme

Veelhoek veelhoek = nuwe Polygon();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Stel die waardes van die vorm

Ellipse2D.Double newCircle = nuwe Ellipse2D.Double(0, 50, 1.0*100, 1.0*100);

//Stel algemene pad eiendomme

GeneralPath gpath = nuwe GeneralPath();

gpath.append(veelhoek, ware);

gpath.append(newCircle, ware);

//Stel die pad

setShape(gpath);

//Stel boks uitleg

getContentPane().setLayout(nuwe BoxLayout(getContentPane(), BoxLayout.X_AXIS));

voeg(Box.createHorizontalGlue());

//Skep etiket en stel eiendomme

JLabel newlabel = nuwe JLabel(“Java Shaped venster”);

newlabel.setForeground(Kleur.wit);

voeg(newlabel);

voeg(Box.createHorizontalGlue());

//Stel inhoud paneel agtergrond

getContentPane().setBackground(Kleur.cyan);

//Stel plek

setLocationRelativeTo(zero);

setVisible(ware);

}

openbare statiese nietig hoof(String[] argumente) {

Youth Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Gaan OS ondersteuning vir hierdie eiendom

indien (genv.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {

Stelsel.uit.println(“OS ondersteun translucentie”);

nuwe JavaShapedWindow();

}

}

}

Ons kan ook die uitvoering van 'n kombinasie van die twee funksies soos translucentie en gevormde venster. Om dit te implementeer, noem setOpacity metode om jou raam. Die resultaat venster vertoon die gekombineerde effek. Maar ons moet onthou dat die onderliggende bedryfstelsel moet pixel vlak translucentie en pixel vlak deursigtigheid ondersteun.

Gevolgtrekking:

In hierdie artikel sal ons gedek het 'n paar nuwe funksies in java7.The translucentie en gevormde venster funksies is baie interessant en maak Java UI komponente meer buigsaam. Maar op dieselfde tyd dat ons moet onthou dat die onderliggende bedryfstelsel al hierdie eienskappe moet ondersteun. Anders sal die effek sal nie sigbaar wees. So in die aansoek self gaan ons die OS ondersteuning en dan te implementeer om die effek. Die nuutste kenmerk van Java toelaat dat die ontwikkelaars verskillende tipes effek te skep op die UI kant. Soos ons almal wat lyk weet en voel is 'n belangrike aspek van enige UI gebaseerde program. So het die ontwikkelaar is nou toegerus met gereedskap om die UI meer aangenaam en aantreklik.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share