haagelMedlem sedan feb. 2006134 inlägg
Jag har en panel (JPanel) som jag ritar i, men det är viktigt att jag själv kan sätta panelens bredd och att den sedan är fast. Den ska alltså inte ändras ifall användaren ändrar storleken på fönstret.
Det sistnämnda borde i och för sig gå att lösa bara genom att låsa fönstret så att det inte går att ändra storlek på det. Nu tar jag för givet att det går... Vet inte hur man gör detta i Java så tips tas tacksamt emot. :)
Men det största problemet är alltså att sätta en panel till en viss storlek. Jag har provat med setSize() mm, men inget verkar hända. Panelen fyller alltid ut tillgängligt utrymme. Sitter och försöker med alla dessa "Layouthanterare" men får inte till något. :(
Det vore ju jättesmidigt att bara kunna ange en storlek och en position för panelen (som jag gör när jag jobbar med .NET), men man kanske inte kan göra det?
Tacksam för hjälp!! :)
LimeMedlem sedan sep. 2001837 inlägg
Jodå, det går. Grejen är att sätta minSize, maxSize och preferableSize till samma och om du använder en GridBagLayout, sätt GridBagConstrainst.fill = NONE.
Det enklaste sättet är annars att använda sig av en BorderLayout och lägga de paneler du inte vill att ska ändra storlek i NORTH, WEST, EAST och SOUTH och lägga det som får ändra storlek i CENTRAL.
haagelMedlem sedan feb. 2006134 inlägg
Tack för svaret Lime. :)
Nu hade jag redan löst det genom att bara rita en bakgrund (en rektangel) med en fast storlek på panelen. Jag kollar hur stor panelen är och räknar ut hur stora marginaler jag måste ha för att placera min ritade bakgrund i mitten av panelen. Typ så här:
int horisontalMargin = (panel.getWidth() - drawAreaWidth) / 2;
int verticalMargin = (panel.getHeight() - drawAreaHeight) / 2;
Sedan lägger jag på marginalen på allt jag ritar ut, inklusive bakgrunden, t.ex:
//Rita bakgrunden.
g.fill3DRect(horisontalMargin, verticalMargin, drawAreaWidth, drawAreaHeight, false);
//Rita en blå boll.
g.setColor(Color.BLUE);
g.fillOval(ballPosition.x+hMargin, ballPosition.y+vMargin, ballSize, ballSize);
Men dina svar kan komma väl till pass i framtiden! :)
Vad gäller att låsa storleken på fönstret så att användare inte kan ändra på denna så var det bara att sätta en egenskap i fönstret (JFrame), nämligen:
myJFrame.setResizable(false);
Måste dock säga att jag är lite förvånad över att Java gör en sak som borde vara enkel så pass krånglig... :l