Sida 1 av 1

Relativt avstånd mellan komponenter i java

Postat: 17 mar 2009, 16:49
av JeyPeyy
Jag sitter och proggar lite java nu och skulle vilja ha lite hjälp med en sak. Jag gör ett grafiskt program med JFrame och skulle vilja att avståndet mellan komponenterna blir relativt storkeken på fönstret. Jag vet inte om ni hängde med, men så här ser det ut:

Kod: Markera allt

public class HiLo extends JFrame implements ActionListener {
    ...
    ...
    ...
    public HiLo() {
        setLayout(new GridLayout(4, 1, getWidth()/140, getHeight()/53));
        ...
        ...
        ...
        getSize().addActionListener(this);
    }
    ...
    ...
    ...
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==getSize()){
            repaint();
        }
        ...
        ...
        ...
    }

}
Jag försöker alltså göra så att när man ändrar storlek på fönstret så ändras avståndet mellan komponenerna. Detta fungerar naturligtvis inte, men jag hoppas någon vet hur man kan göra =). Inte jätteviktigt, men kan vara bra att veta. Jag vet att java är ett skitspråk, men eftersom vi lär oss det i skolan får jag väl lära mig det. Efter studenten ska jag nog ta och lära mig c++ med gtk+ eller qt.

Re: Relativt avstånd mellan komponenter i java

Postat: 17 mar 2009, 19:57
av SoniC
Osäkert om jag förstått exakt vad du är ute efter. Men om det inte handlar om exakt relativitet så kan du kanske du kan titta närmare på BorderLayout.

//pseudo
jpanel.setlayout(new BorderLayout());
jpanel.add(myleftThingy, BorderLayout.WEST);
jpanel.add(rightsidecontrolpanel, BorderLayout.EAST);
...

Re: Relativt avstånd mellan komponenter i java

Postat: 17 mar 2009, 20:13
av JeyPeyy
SoniC skrev:Osäkert om jag förstått exakt vad du är ute efter. Men om det inte handlar om exakt relativitet så kan du kanske du kan titta närmare på BorderLayout.

//pseudo
jpanel.setlayout(new BorderLayout());
jpanel.add(myleftThingy, BorderLayout.WEST);
jpanel.add(rightsidecontrolpanel, BorderLayout.EAST);
...
Nja det var inte riktigt det jag menade. Jag vill egentligen bara att "GridLayout(4, 1, getWidth()/140, getHeight()/53)" ska räknas om när man ändrar fönstrets storlek, men jag tänkte att det var lika bra att måla om hela fönstrets innehåll när fönstrets storlek ändras. Hur gör jag det? De två sista parametrarna i GridLayout är alltså längden mellan komponenterna.

Re: Relativt avstånd mellan komponenter i java

Postat: 17 mar 2009, 23:33
av JeyPeyy
Är det någon som förstår vad jag vill åstadkomma? Säg till om ni inte förstår så ska jag försöka vara tydligare.

Re: Relativt avstånd mellan komponenter i java

Postat: 18 mar 2009, 13:29
av JeyPeyy
bump?

Re: Relativt avstånd mellan komponenter i java

Postat: 11 apr 2009, 23:23
av gasol
Det räcker inte med att rita om fönsteret, det görs automatiskt när det byter storlek.
Det du måste göra är att ändra storleken på din Gridlayout...

Kod: Markera allt

public HiLo() {
     myGrid = new GridLayout(4, 1, getWidth()/140, getHeight()/53);
     setLayout(myGrid);
}

public void actionPerformed(ActionEvent e) {
        if(blaha is a resize event) {
           //är osäker på dom du vill ha H eller V här...
            myGrid.setHgap(getWidth()/140);
            myGrid.setVgap(getHeight()/53);
        }
}