remi sture Skrevet 19. september 2005 Del Skrevet 19. september 2005 (endret) Hallaisen! Sliter litt med å få skrevet ut tekst fra database skikkelig i et JTextArea. Jeg skal skrive ut resultatet av en spørring, men teksten står nå i hytt og pine rundt om på skjermen. Se bilde Problemet er at teksten som skrives ut varierer veldig i lengde, og det derfor ikke er mulig å ha fastsatt på forhånd hvor mange \t'er det skal være i utskriften. Prøvde å lage en metode for å sjekke det, men det funker ikke. Noen som kan hjelpe meg med denne, for jeg er sikkert helt på jordet! public static String printRiktigAntallTabs(String tekst) { String tabs; if(tekst.length() <= 9) { tabs = tekst+"\t"; } else if((tekst.length() > 9) && (tekst.length() < 18)) { tabs = tekst+"\t\t"; } else if((tekst.length() > 18) && (tekst.length() < 27)) { tabs = tekst+"\t\t\t"; } else if((tekst.length() > 27) && (tekst.length() < 36)) { tabs = tekst+"\t\t\t\t"; } else { tabs = tekst+"\t"; } return tabs; } public String toString() { return printRiktigAntallTabs(id) + printRiktigAntallTabs(navn) + printRiktigAntallTabs(type) + printRiktigAntallTabs(beskrivelse) + printRiktigAntallTabs(pris); } Endret 19. september 2005 av remi sture Lenke til kommentar
MissCB Skrevet 19. september 2005 Del Skrevet 19. september 2005 Kanskje en idé å bruke JTable istedenfor JTextArea?!? Bare en sånn liten tanke fra meg her...... :-) Lenke til kommentar
boemane Skrevet 19. september 2005 Del Skrevet 19. september 2005 Dersom du ønsker å benytte deg av JTextArea, må du gjøre følgende: 1. for hver kolonne, gå gjennom hver rad og finn max-lengde for kolonnen 2. Når du vet denne vet du hvor mange mellomrom du skal tilføre for å gjøre alle radene til kolonnen like lang Det betyr med andre ord at du enten må gå gjennom resultatet 2 ganger eller lagre resultatet i en 2-dimensjonal matrise. Når du legger innholdet inn i matrisen regner du ut makslengden til hver kolonne. Deretter når du går gjennom matrisen for å skrive ut innholdet, legger du på riktig antall mellomrom. En tredje metode er å endre lengden på samtlige kolonner til f.eks. 30 tegn. er kolonnen på 10 tegn legger du til 20 mellomrom. Er den på 40 tegn fjerner du 10. Det spørs hvor akseptabelt det er å ikke vise hele innholdet. En fjerde mulighet er selvfølgelig å bruke JTable. Lenke til kommentar
buskmann Skrevet 19. september 2005 Del Skrevet 19. september 2005 Noe som kan hjelpe er å bruke en monospace font. Da er alle bokstaver like brede. Lenke til kommentar
remi sture Skrevet 23. september 2005 Forfatter Del Skrevet 23. september 2005 Takk for tips. Noen som kan gi meg et eksempel på bruk av JTable? Slik skriver jeg ut fra databasen nå: public MatrettVo skrivUtMatrett(String type){ Statement stmt; ResultSet rs; MatrettVo matrett = null; try { String sql = "SELECT * FROM Prosjekt." + type; stmt = con.createStatement(); rs = stmt.executeQuery(sql); while(rs.next()) { matrett = new MatrettVo(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5)); Gui.txaUtskrift.append(""+matrett+"\n"); } rs.close(); stmt.close(); return matrett; } catch(SQLException e){ System.out.println("Klarer ikke å utføre spørringen"); System.out.println(e.getMessage()); return matrett; } } public class MatrettVo { private String id; private String navn; private String type; private String beskrivelse; private String pris; // Konstruktør public MatrettVo(String id, String navn, String type, String beskrivelse, String pris) { this.id = id; this.navn = navn; this.type = type; this.beskrivelse = beskrivelse; this.pris = pris; } // Få riktig antall tabs på utskrift public static String printRiktigAntallTabs(String tekst) { String tabs; if(tekst.length() <= 9) { tabs = tekst.toLowerCase()+"\t\t"; } else if((tekst.length() > 9) && (tekst.length() < 18)) { tabs = tekst.toLowerCase()+"\t\t"; } else if((tekst.length() > 18) && (tekst.length() < 27)) { tabs = tekst.toLowerCase()+""; } else if((tekst.length() > 27) && (tekst.length() < 36)) { tabs = tekst.toLowerCase()+"\t\t\t\t"; } else { tabs = tekst.toLowerCase()+"\t"; } return tabs; } public String toString() { return printRiktigAntallTabs(id) + printRiktigAntallTabs(navn) + printRiktigAntallTabs(type) + printRiktigAntallTabs(beskrivelse) + printRiktigAntallTabs(pris); } } Lenke til kommentar
buskmann Skrevet 23. september 2005 Del Skrevet 23. september 2005 Noen som kan gi meg et eksempel på bruk av JTable? http://java.sun.com/docs/books/tutorial/ui...ents/table.html Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå