Šta je novo?

JButton i tacno pozicioniranje...

The pocetnik

Čuven
Učlanjen(a)
05.12.2000
Poruke
1,741
Poena
649
Kojom funkcijom da pozicioniram dugme unutar panela i frame-a tj. imam ovakav main:

public static void main(String varg[]){
VirtuelniEkran panel=new VirtuelniEkran();
panel.setOpaque(true);
frame=new JFrame("Proba");
frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
frame.getContentPane().add(panel);
frame.setSize(new Dimension(600,600));
frame.setVisible(true);

I u konstruktoru klase VirtuelniEkran imam npr.sledece:

JPanel test=new JPanel();
JButton proba=new JButton("Proba");
test.add(proba);
add(test);

Znaci zelim da definisem tacne koordinate tacke u odnosu na sam panel test i probao sam sledece:

proba.setLocation(0,0) <-stavljao sam i druge brojeve isl ali se jednostavno ne pomera Dugme

Probao sam i:
proba.setLocation(new Point(0,0))

I dalje ne radi pozicioniranje tj. bilo koje brojeve da stavim dugme stoji na istom mestu i ne pomera se.

Jos neke stvari sam nalazio na googlu, ali nikako nisam uspeo da pomerim dugme.Kako da ga uspesno pomerim?
 
A da uzmes JBuilder? ;)


p.s. A bez JBuilder-a bi trebao da koristis recimo XY Layout Manager...
 
Pa radim u Java Creatoru i navikao sam na njega i posto sam sve rucno napisao_Ostalo je samo da pozicioniram dugmeta i da razresim problem sa nekim threadom.To moram da zavrsim do utorka ujutru tako da bi tacna komanda za slucaj JPanela ili Panela bila sasvim dovoljna.Kaze mi drug da to radi u eclipse-u lepo i da se iz nejga moze videti deo koda koji mi treba, ali meni eclipse odbija saradnju tako da moram da ovo resim na ovaj nacin...

Da imam vremena mozda bi i koristio JBuilder ali nemam.
 
Pa kazem ti, koristi XY Layout, umesto default Border Layout-a (ako me secanje dobro sluzi, a trenutno sam u VSu, tako da mi stari kodovi nisu pri ruci), to 99.9% mora da radi...

Evo sad ti izguglah :) na brzaka, posto sam u frci...

Kod:
Create the LayoutManager with the width and height of the panel you are adding it to: 

this.setLayout(new XYLayout(400,130));
Add the components to the panel with a text string that contains x, y, width and height of where you want the component: 

//this.add("xposition, yposition, width, height", component);
this.add("47,55,70,25", aLablel);
this.add("47,35,280,20", aTextField);
this.add("170,55,165,20", aButton);

http://www-x.antd.nist.gov/glass/doc/api_1.0/gov/nist/antd/java/awt/XYLayout.html


To je JBuilder-ov Layout, a nalazi se u jbcl.jar i jbcl-awt.jar bibliotekama.



p.s. Za prvu pomoc, bez JBuilder-a uopste moze da posluzi i GridBagLayout koji je u osnovnom SDK paketu (za upotrebu i osobine pogledaj J2SDK docs)
 
Probacu sada ovo pa cu da javljam rezultate...

EDIT:
Dzaba kada nemam te biblioteke i sa ovim cu morati da menjam komplet kod celog interfejsa koji je poveliki, a sa onom komandom bi menjao samo par linija koje sluze samo za pozicioniranje.
Nista pokusacu nekako sa ovim JButtoni-ma...glupava java kada ima glupavo default pozicioniranje Panela preko "WEST" isl gluposti.

Znaci da li neko ima eclipse koji radi pa da stavi i pomera jedan JButton pa da vidi sta se menja u kodu, jer drugacije ne mogu da radim, jer niti ima JBuilder nit neke posebne biblioteke isl...
 
Poslednja izmena:
sreca moja zena cuva moje stare prnje na disku |)))

nasao sam kako jdeveloper to radi:


private void jbInit() throws Exception
{
this.setSize(new Dimension(600, 421));
this.getContentPane().setLayout(null);
this.setLocation(150,150);
jButton1.setText("Unesi");
jButton1.setBounds(new Rectangle(255, 360, 73, 23));
jButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jButton1, null);

}

koliko se secam nisam nista od jdeveloperovih biblioteka koristio, samo cistu javu, tako da bi ovo moralo da ti radi...
srecno
 
Ako se ne varam, ovaj kod izgleda kao da je pisan bas u JBuilder-u (tj. da ga je on sam napravio pri stavljanju JButton-a na formu), a njemu je XYLayer default...


@The pocetnik
Instaliraj JBuilder i pokupi samo te biblioteke. Cak i ako radis komercijalan projekat, mislim da su slobodne za redistribuciju.
 
varas se, lepo sam napisao da je JDeveloper (ORACLE) u pitanju i da ne koristim nista osim standardnih jre biblioteka i da je meni ovako radilo i na masini gde nije bio oracle jdev instaliran... dakle radi to i bez xylayera...
 
danijel00 je napisao(la):
.............
this.getContentPane().setLayout(null);
......................

Ovde se koristi null layout, koji radi kao i XY, tj. ima apsolutno pozicionrianje (tako kaze Borlandova dokumetacija)
 
Mislim da ce ipak raditi...

Sad sam se setio da sam isti kod (radjen u JBuilder-u) bio kompajlirao i iz Eclipse-a, i radio je, a u projektu nisam imao include-ovanu pomenutu builder-ovu biblioteku, vec, od builder-ovih samo dbswing.
 
Po meni najbolji layout je AnchorLayout iz jIgloo-a (plugin za eclipse/websphere). Osim apsolutnog pozicioniranja mogu da se postavljaju i anchori tako da elementi mogu da prate resize forme.
Naravno, nije potreban eclipse, samo se importuje com.cloudgarden.layout.* (u attachovanom .rar-u)

Posle ga koristiš kao bilo koji drugi layout:
Kod:
AnchorLayout thisLayout = new AnchorLayout();
this.getContentPane().setLayout(thisLayout);
this.getContentPane().add(
	jButton1,
	new AnchorConstraint(...));

ps.
CloudGarden.com SOFTWARE USER AGREEMENT je napisao(la):
Cloudgarden's Jigloo SWT/Swing GUI Builder is free for NON-COMMERCIAL use only, while commercial use requires purchase of a professional license for each user of Jigloo.
 

Prilozi

  • jigloo.rar
    2.8 KB · Pregleda: 27
Poslednja izmena:
Prvo sa vam se zahvalim na pomoci.

Problem sam resio na drugi nacin, jer ove navedene metode(danijelova radi i kod mene) su trazile od mene da menjam dosta koda, a vec rekoh da do sutra sam morao da to zavrsim, pa sam uzeo i neke druge objekte koje sam crtao(java2d) sam pomerio tako da mi ovi tasteri ne smetaju i mozda malo ruznije izgleda funkcionalnost je ostala netaknuta.Naravno ove stvari cu gledati da upotrebim sledeci put kada mi zatrebaju, jer kad-tad ce mi zatrebati...
 
Default layout koji swing koristi je BorderLayout. Sa dodeljivanjem apsolutnih kordinata, ako eksplicitno nisi napisao this.getContentPane().setLayout(null); (kao sto je daniel napisao), nista neces postici. I napomena, niko ne koristi pri iscrtavanju ekrana taj nacin, nadji najbolji layout koji mozes da iskoristis i koristi njega.
 
Nazad
Vrh Dno