mo:d:fiMedlem sedan jan. 200474 inlägg
Hej...
Sitter med ett program i huvudsak uppbyggd av 2-3 synliga JPaneler varvid den mittersta skall vara borttagbar. vid klick på en knapp skall den mittersta panelen försvinna eller återuppstå. Min första approach var att använda sig av cardlayout och växla mellan en tom och den ordinarie panelen men med nackdelen att den tomma panelen är lika stor som den ordinarie när den i själva verket skall vara 0x0 i stort sett.
problemet ligger förmodligen i huvudpanel som innehåller cardlayouten och de båda panelerna som byter plats. hur ska man lyckas få den att resiza vid byte av kort i cardlayouten???
eller finns det någon annan smidig lösning på problemet som inte innefattar en cardlayout?
(1) Panel1
(2) Panel2 med cardlayout -> en tom och en fylld panel som växlas mellan
(3) Panel3
mo:d:fiMedlem sedan jan. 200474 inlägg
nån som har en enkel funktion som returnerar filnamn på alla filer i en viss katalog med en viss filändelse förresten?
PhorpherMedlem sedan feb. 20002 059 inlägg
Låter som ett problem som borde gå att lösa snyggt med hjälp av splitpane. :)
jmeMedlem sedan maj 20011 967 inlägg
Här har du ett exempel som tar in sökvägen till valfri katalog samt filändelsen som skall letas upp. Exemplet returnerar namnen på de filer vars filändelse matchar.
import java.io.*;
import java.util.*;
public class Test
{
public Test()
{
}
public Vector accept(String path, String extension) throws Exception
{
File file = new File(path);
String[] files = file.list();
Vector accepted = new Vector();
for(int i = 0; i < files.length; ++i)
{
if(files[i].endsWith("." + extension) )
{
accepted.add(files[i]);
}
}
return accepted;
}
public static void main(String[] args) throws Exception
{
Test t = new Test();
Vector v = t.accept("/usr/local/", "txt");
for(int i = 0; i < v.size(); ++i)
{
System.out.println(v.get(i) );
}
}
}
mo:d:fiMedlem sedan jan. 200474 inlägg
tackar ska prova implementera funktionen i helgen.
angående splitpane så e det tyvär inte någon direkt fungerande lösning.
hela fönstret skall byta storlek när man väljer att "dra ut" den nya panelen som ersätter den tomma på 0x0 pixlar.
en splitpane styr ju bara hur mycket av en fast storlek som skall gå till respektive panel...
LimeMedlem sedan sep. 2001837 inlägg
Ett tips... Tänk "en panel med bredden 0 syns inte..."
mo:d:fiMedlem sedan jan. 200474 inlägg
funderingen är om panelen skall ha samma bredd som frame'n och höjden kanske ska ligga på 1-5 pixlar. sagt och gjort men hur får man fönstret att skala om och anpassa sig efter panelerna och inte tvärtom. Provade använda en cardlayout med föredragen höjd på 5 pixlar men den skalade inte om sig själv när man bytte panel och den större kom fram, det är där i problemet ligger. frågan är om man måste skala frame'n i koden vid byten eller om man kan komma runt det på något snyggt sätt och allting skalas automatiskt.
den understa panelen vill jag helst inte röra över huvudtaget eftersom den är tillkrånglad med en Springlayout som man helst inte vill pilla för mycket på.
btw e det nån som jobbat med egna cellrenders i en JList?
allting funkar klockrent förutom att när man ibland scrollar i listan renderas listelementet utanför JListen. funderar på om det är springlayout som buggar för nu funkar det endast tilldredställande om man skalat JListen exakt så att hela element ska passa vilket tvingat mig att göra huvudframen no resize eftersom springlayouten size'ar om JListen annars...