02. marts 2005 - 10:47
Der er
6 kommentarer og 1 løsning
JTextArea - auto resize?
Jeg har et JTextArea, som jeg fylder noget text i fra en database. Er det muligt at lave en resize på det textarea, så det bliver stort nok til at vise hele teksten uden at det er nødvendigt at scrolle? Den skal bare ikke altid være meget stor. Kun stor nok til at vise hele teksten. Hvis bare jeg kan justere højden, er jeg glad. :-)
Annonceindlæg fra Cognizant
02. marts 2005 - 10:55
#1
Hvis du ved hvor mange linjer der kan være i din textarea så kan du evt prøve at tælle de linjer du vil smide ind i den... er der for mange får må du få den til at udvide textarea med et hvis antal linjer.. måske kan jeg selv finde ud af det hehe.. så kan jeg lige vise hvordan.. måske har en anden noget kode klar.
02. marts 2005 - 11:00
#2
jeg laver lige et eksempel.. må jeg da kunne finde ud af;o)
02. marts 2005 - 11:18
#3
Ikke gennemtested.. måske lidt fejl i hehe.. men lige netop i de tilfælde jeg afprøvede det med virkede det fint package mypackage; import javax.swing.JFrame; import java.awt.Dimension; import javax.swing.JTextArea; import java.awt.Rectangle; public class Frame1 extends JFrame { private JTextArea jTextArea1 = new JTextArea(); public Frame1() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(null); this.setSize(new Dimension(400, 421)); jTextArea1.setText("jTextArea1"); jTextArea1.setBounds(new Rectangle(65, 55, 235, 50)); this.getContentPane().add(jTextArea1, null); int height = 50; int counter = 0; String tekst = "asdasdasdasdasda\nnasdaskdasd\nnasdasdasd\nnasdasdasdsad\nasdasdasdas\nasdasdasd\nasdaslkdmalknmdlkasd\naksmdasklmdlkasd\nasdkasdpasdasd"; for (int i = 0; i < tekst.length(); i++) { if(tekst.charAt(i) == '\n') counter++; } if(counter > 3) { counter = 20 * counter; jTextArea1.setBounds(new Rectangle(65, 55, 235, counter)); } jTextArea1.setText(tekst); } }
02. marts 2005 - 11:18
#4
og til at starte det med package mypackage; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.UIManager; import java.awt.Dimension; import java.awt.Toolkit; public class Application1 { public Application1() { Frame frame = new Frame1(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); } /** * * @param args */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new Application1(); } }
02. marts 2005 - 11:18
#5
ps. brugte ikke denne til noget alligevel int height = 50;
02. marts 2005 - 11:59
#6
int counter = 50; String tekst = "asdasdasdasdasda\nnasdaskdasd\nnasdasdasd\nnasdasdasdsad\nasdasdasdas\nasdasdasd\nasdaslkdmalknmdlkasd\naksmdasklmdlkasd\nasdkasdpasdasd"; for (int i = 0; i < tekst.length(); i++) { if(tekst.charAt(i) == '\n') counter = counter+5; } if(counter > 3) { jTextArea1.setBounds(new Rectangle(65, 55, 235, counter)); } jTextArea1.setText(tekst); sådan kunne den også laves:o) så skal du kun pille ved counter = counter+5;
02. marts 2005 - 12:23
#7
Ok. Jeg prøver at se på det.
Kurser inden for grundlæggende programmering