Sut i greu Ffenestri dryloyw ac Shaped mewn Java?

Trosolwg: Yn yr erthygl hon byddwn yn trafod am dryloywder a gwahanol ffenestri siâp yn Java. Yn java 7 swing yn cefnogi'r nodwedd hon a gwneud cydrannau UI swing yn fwy hyblyg ac yn hawdd eu defnyddio.

Cyflwyniad: Mewn rhai cais, ffenestr dryloyw yn ofyniad i gefnogi ei swyddogaeth. Nawr yn Java, Gall tryloywder yn cael ei rhoi ar waith. Mae ffenestr dryloyw yn cael ei greu trwy newid ei didreiddedd drwy weithredu dull o'r enw setOpacity ar elfen JFrame. Ond mae'n rhaid i ni ddeall bod dryloyw ffenestr yn bosib dim ond os bydd y system weithredu sylfaenol ei gefnogi. Ac mae angen hefyd i wneud yn siŵr nad y ffenestr ei addurno. I wneud ffenestr diaddurn, angen i chi alw setUndecorated (yn wir) dull. Mae angen rhywfaint o amser hefyd i newid ar ffurf UI ffenestr. I'w weithredu, mae angen i alw dull setShape o fewn y dull componentResized. Bydd yn ail-gyfrifo'r siâp wrth y ffenestr yn cael ei newid maint.

Ddaear yn ôl: Yn java UI, cymorth ar gyfer tryloywder a siâp ffenestr yn galw amser hir ar gyfer cydrannau Swing / AWT. Ar gyfer mynediad datblygiad brodorol i eiddo hyn ar gael o amser hir yn ôl. Ond nid oedd yn hygyrch i gydrannau craidd java. Yn Java6 ymlaen, cymorth ar gyfer tryloywder a ffenestr siâp ar gael. Hyd yn oed y tryleuedd lefel picsel hefyd yn eu cefnogi mewn Java7.

Math o gymorth ar gyfer tryloywder a thryloywder: Java 7 yn cefnogi'r tri math canlynol o gymorth.

Dryloyw: Yn y nodwedd hwn, gall y ffenestr wedi liwiau gwahanol ond gyda'r un lefel o didreiddedd. Felly mae'r gwerth alffa yn un fath ar gyfer yr holl picsel. Mae'r effaith yn addas ar gyfer pylu oddi ar ffenestr ac yna yn raddol yn gostwng ac yn cynyddu gwerth alffa.

PERPIXEL_TRANSLUCENT: Eiddo hwn yn cefnogi gwerthoedd gwahanol alffa o fewn y ffenestr ei hun. Mae hyn yn cael ei ddefnyddio i pylu rhanbarth dethol y ffenestr.

PERPIXEL_TRANSPARENT: Eiddo hwn yn cefnogi gwahanol siapiau o ffenestri yn hytrach na petryal traddodiadol. Os y tryloywder picsel cael ei gefnogi, gwahanol siapiau fel cylch, Gall triongl yn cael eu creu.

Cyn i ni ddefnyddio unrhyw un o'r eiddo uchod, mae angen i ni brofi cefnogaeth gorwedd o dan system weithredu. Gall y prawf yn cael ei wneud drwy ddefnyddio dull isWindowTranslucencySupported perthyn i'r dosbarth java.awt.GraphicsDevice. Mae'n cymryd y math o dryloywder fel mewnbwn ac yn dychwelyd gwir / ffug er mwyn dangos y gefnogaeth.

Gadewch i ni edrych ar god sampl i weithredu'r nodwedd tryleuedd. Yn yr enghraifft hon, rydym wedi creu petryal ffenestr dryloyw ar faes testun. Yn gyntaf, rydym wedi anabl y modd addurno i gael yr effaith o dryloywder. Yna, rydym wedi gwirio os yw'r system weithredu sylfaenol blaid ai peidio. Os caiff ei ategu yr effaith yn weladwy ar y ffenestr ffrâm.

Listing1: Sampl dangos tryloywder o ffenestr JFrame

mewnforio java.awt.Color;

mewnforio java.awt.GraphicsDevice;

mewnforio java.awt.GraphicsEnvironment;

mewnforio java.awt.GridBagLayout;

mewnforio java.awt.event.ComponentAdapter;

mewnforio java.awt.event.ComponentEvent;

mewnforio java.awt.geom.Rectangle2D;

mewnforio javax.swing.JFrame;

mewnforio javax.swing.JTextArea;

mewnforio javax.swing.SwingUtilities;

cyhoeddus dosbarth TransRecFrame yn ymestyn JFrame {

/**

* Creu ffrâm hirsgwar tryloyw gyda 85% tryloywder

*/

cyhoeddus TransRecFrame() {

super(“Ffrâm Hirsgwar dryloyw”);

//Gosod cynllun

setLayout(newydd GridBagLayout());

//Creu ardal testun

terfynol JTextArea txtArea = newydd JTextArea(5, 50);

txtArea.setBackground(Lliw.CYAN);

ychwanegu(txtArea);

//Ffoniwch i analluogi addurno

setUndecorated(yn wir);

 

//Ffoniwch setShape i newid maint y siâp wrth widnow yn cael ei newid maint

addComponentListener(newydd ComponentAdapter() {

@ Diystyru

cyhoeddus unedau gwag componentResized(ComponentEvent a) {

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

}

});

//Gwneud y ffenestr 85% dryloyw

setOpacity(0.85f);

//Gosod paramedrau eraill

setLocationRelativeTo(sero);

setSize(200, 300);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(yn wir);

}

cyhoeddus sefydlog unedau gwag prif(Llinyn[] args) {

//Creu amgylchedd graffeg

Ieuenctid Venture GraphicsEnvironment = GraphicsEnvironment

.getLocalGraphicsEnvironment();

//Gwiriwch os OS cefnogi Tryleuedd

os (genv.getDefaultScreenDevice().isWindowTranslucencySupported(

GraphicsDevice.WindowTranslucency.Dryloyw)) {

System.out.println(“OS cefnogi tryloywder”);

newydd TransRecFrame();

}

}

}

Nodweddion i gefnogi tryloywder a siâp: Yn Java7 ceir yn bennaf dair nodweddion sydd ar gael i gefnogi tryloywder a siâp ffenestr.

  • Tryleuedd ffenestr Llawn: Yn y dull hwn ffenestr lawn yn dryloyw.
  • Fesul tryleuedd picsel: Yn y dull hwn yn rhan o'r ffenestr yn dryloyw
  • Ffenestri Shaped: Gwneud gwahanol ffenestri siâp fel fforamen, cylch, hirsgwar ac ati.

Fesul tryleuedd picsel:

Rydym eisoes wedi gweld sut i wneud ffenestr tryloyw cyflawn yn yr enghraifft flaenorol. Nawr byddwn yn trafod yr ail ran o wneud set o picsel dryloyw drwy ddefnyddio eu lliw cefndir. Mae rhai cyfyngiadau i weithredu'r senario. Ni ddylai'r ffenestr fod yn sgrin lawn ac mae'n rhaid i'r system gefnogi tryleuedd lefel picsel. Mae gweddill y weithdrefn yn debyg i'r enghraifft uchod.

Yn yr enghraifft ganlynol, byddwn yn gweld sut tryleuedd lefel picsel yn cael ei gosod mewn ffrâm.

Listing2: Sampl dangos cefnogaeth tryleuedd lefel picsel.

mewnforio javax.swing.*;

mewnforio java.awt. *;

mewnforio java.awt.event.ActionEvent;

mewnforio java.awt.event.ActionListener;

cyhoeddus dosbarth PixelTranslucency yn ymestyn JFrame {

cyhoeddus PixelTranslucency() {

super(“Gosod tryleuedd lefel picsel”);

//Gosod maint y JFrame

setSize(250, 250);

//Gosod gosod allan

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

//Galw am osod picsel

ar gyfer(int i = 0; i < 16; i ){

ychwanegu(newydd Panel Pixel(255 – i * 12));

}

//Gosod cefndir ac eiddo eraill

setBackground(newydd Lliw(0, 0, 0, 0));

setLocationRelativeTo(sero);

setVisible(yn wir);

}

cyhoeddus sefydlog unedau gwag prif(Llinyn[] args) {

Ieuenctid Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Gwirio a yw'r ffenestr yn cefnogi tryleuedd

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

System.allan.println(“OS cefnogi tryloywder”);

newydd PixelTranslucency();

}

} preifat dosbarth Panel Pixel yn ymestyn JPanel {

preifat Panel Pixel(int pixl) {

super();

setBackground(newydd Lliw(0, 0, 255, pixl));

}

}

}

Ffenestri Shaped:

Nawr byddwn yn trafod am y nodwedd bwysig arall a gefnogwyd gan ffenestr siâp Java7.The cefnogi pob math o siapiau beth bynnag fydd y gofyniad y defnyddiwr. Mae hyn yn nodwedd yn eich helpu i greu unrhyw siâp fel cylch, triongl, polygon neu unrhyw siâp cymhleth posibl. Y dull setShape y dosbarth ffenestr ar gael ar gyfer gosod yr eiddo. Ond unwaith eto mae'n rhaid i ni gofio na ddylai modd sgrîn lawn yn cael ei ganiatáu ac mae'r system weithredu yn cefnogi tryloywder.

Mae'r enghraifft ganlynol yn dangos y defnydd o ffenestr siâp.

Listing3: Mae'r cod enghreifftiol yn dangos y defnydd o ffenestr siâp.

mewnforio javax.swing.*;

mewnforio java.awt. *;

mewnforio java.awt.geom.Ellipse2D;

mewnforio java.awt.geom.GeneralPath;

cyhoeddus dosbarth JavaShapedWindow yn ymestyn JFrame {

cyhoeddus JavaShapedWindow() {

super(“Gosod Ffenestr siâp”);

//Gosod diaddurn OFF i gael effaith

setUndecorated(yn wir);

//Gosod maint

setSize(newydd Dimensiwn(250, 250));

//Gosod eiddo polygon

Polygon Polygon = newydd Polygon();

polygon.addPoint(0, 100);

polygon.addPoint(50, 0);

polygon.addPoint(100, 100);

//Gosodwch y gwerthoedd y siâp

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

//Gosod eiddo llwybr cyffredinol

GeneralPath gpath = newydd GeneralPath();

gpath.append(polygon, yn wir);

gpath.append(newCircle, yn wir);

//Gosod y llwybr

setShape(gpath);

//Gosod cynllun blwch

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

ychwanegu(Blwch.createHorizontalGlue());

//Creu label a gosod eiddo

JLabel newlabel = newydd JLabel(“Java ffenestr Shaped”);

newlabel.setForeground(Lliw.gwyn);

ychwanegu(newlabel);

ychwanegu(Blwch.createHorizontalGlue());

//Gosod cynnwys cwarel lliw cefndir

getContentPane().setBackground(Lliw.cyan);

//Gosod lleoliad

setLocationRelativeTo(sero);

setVisible(yn wir);

}

cyhoeddus sefydlog unedau gwag prif(Llinyn[] args) {

Ieuenctid Venture GraphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

//Gwiriwch cefnogaeth Arolwg Ordnans ar gyfer yr eiddo hwn

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

System.allan.println(“OS cefnogi tryloywder”);

newydd JavaShapedWindow();

}

}

}

Gallwn hefyd yn gweithredu cyfuniad o ddwy nodwedd megis tryleuedd a siâp ffenestr. I weithredu hyn, ffoniwch dull setOpacity at eich ffrâm. Bydd y ffenestr canlyniad yn dangos yr effaith gyfun. Ond dylem gofio rhaid i'r system weithredu sylfaenol cefnogi tryloywder lefel picsel a thryloywder lefel picsel.

Casgliad:

Yn yr erthygl hon rydym wedi ymdrin â rhai nodweddion newydd yn tryleuedd java7.The a nodweddion ffenestri siâp yn wirioneddol ddiddorol ac yn gwneud cydrannau UI java mwy hyblyg. Ond ar yr un pryd, mae'n rhaid i ni gofio y dylai'r system weithredu sylfaenol cefnogi'r holl eiddo hyn. Fel arall, ni fydd yr effaith yn weladwy. Felly, yn y cais ei hun rydym yn edrych ar y gefnogaeth OS ac yna gweithredu'r effaith. Y nodwedd ddiweddaraf o java yn caniatáu i'r datblygwyr i greu gwahanol fathau o effaith ar yr ochr UI. Fel yr ydym i gyd yn gwybod bod yn edrych ac yn teimlo yn agwedd bwysig o unrhyw gais sy'n seiliedig UI. Felly, y datblygwr yn awr yn meddu ar offer i wneud y UI yn fwy dymunol a deniadol.

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share