Låsa storlek på JTextArea [JAVA]

Permalänk
Medlem

Låsa storlek på JTextArea [JAVA]

Behöver hjälp!

I vårt projektarbete i 3an så håller jag och 3 kompisar på och skriver en chatklient.

Jag skriver GUIn till allting. Men jag har stött på ett problem...

Jag måste kunna låsa JTextArean där all chat hamnar ...

hm.. verkar som om det är JScrollPane som bråkar ... Någon som ser vad jag gjort för fel där ?
Här är koden:

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class chat extends JFrame implements ActionListener { //Grafiska komponenter och andra datatyper JTextArea läsa = new JTextArea(10,4); JTextArea skriva = new JTextArea(3,20); JButton skicka = new JButton("Skicka"); //Konstruktor chat() { //Anropa superklassens konstruktor och ge titeln super("Fichi"); //Skapa paneler och placerar dessa i fnönstret setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); JPanel p0 = new JPanel(); //Läsa och scrollpane add(p0); JPanel p1 = new JPanel(); //skriva och skicka-knapp add(p1); //****************** p0.setLayout(new BoxLayout(p0, BoxLayout.X_AXIS)); p0.setBorder(BorderFactory.createEmptyBorder(10,10,5,10)); JScrollPane scrollPane = new JScrollPane(läsa, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setPreferredSize(new Dimension(20, 75)); p0.add(läsa); p0.add(scrollPane); läsa.setBorder(BorderFactory.createLineBorder(Color.lightGray, 1)); //************************** p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS)); p1.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); //p1.setBorder(BorderFactory.createMatteBorder(1,1,0,1,Color.DARK_GRAY)); p1.add(skriva); p1.add(skicka); skriva.setBorder(BorderFactory.createLineBorder(Color.lightGray, 1)); //Menyraden JMenuBar menubar = new JMenuBar(); setJMenuBar(menubar); JMenu meny1 = new JMenu("Meny1"); JMenu meny2 = new JMenu("Meny2"); JMenu meny3 = new JMenu("Meny3"); menubar.add(meny1); menubar.add(meny2); menubar.add(meny3); /* //Arkiv-menyn arkiv.add(ny); arkiv.add(öppna); arkiv.add(print); arkiv.add(pageformat); arkiv.addSeparator(); arkiv.add(avsluta); //Redigera-menyn redi.add(klipp); redi.add(kopiera); redi.add(klistra); redi.getItem(0).setText("Klipp Ut"); redi.getItem(1).setText("Kopiera"); redi.getItem(2).setText("Klistra In"); */ //Låt dessa objekt lyssna på händelser skicka.addActionListener(this); //Anpassa och visa upp fönstret pack(); //setSize(200,500); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } //Metod som anropas vid någon händelse public void actionPerformed(ActionEvent ae) { if(ae.getSource() == skicka) { läsa.setText("Chat, Chat, Chat ..."); } else { läsa.setText("Bajs"); } } //main-metoden public static void main(String[] RaveN) { //Login namnFönster = new Login(); new chat(); } }

Koden är fortfarande väldigt mycket i utvecklingsstadium, så inga hårda ord mot den =P

Tack på förhand ..
// Micke

Visa signatur

[[ CPU: P4 3 ghz @ 3,4 ghz, socket 478 ]] [[ Mobo: ASUS P4C800-E Deluxe ]] [[ 3*512 mb, pc3200 ]] [[ 2 * 120 gb S-ata, 1 * 200 gb IDE ]] [[ Asus 9600SE ]] [[ Logitech Z-5500 ]]

Permalänk
Avstängd

Vad menar du med "låsa"? Att ingen ska kunna editera däri? Isåfall görs det med JTextArea.setEditable (false); tror jag...

Permalänk

använd metoden setResizeable i JFrame så kommer ni att låsa hela fönsterstorleken. Annars så får ni använda er av t.ex. gridbaglayout och lägga vikter på hur storleksförändringen av JTextArea ska gå till samt ge komponenten grundstorleken antingen via konstruktorn eller via setRows och setColumns.

Visa signatur

2xHP w2207, Intel C2D E6750, Gigabyte P35-DS3, Corsair Twin2X2048-6400C4, XFX Geforce 8800GTS, 400GB HDD[br]
Athlon 64 3200+ "Winchester", ASUS A8N-SLI deluxe, Corsair TWINX1024-3200XL, XFX Geforce 6800GT@ULTRA, 160GB HDD

Permalänk
Medlem

Tyvärr itne riktigt det jag önskade.

Jo det är så att när man skriver i rutan om man då kommer ner på sista raden så förstoras rutan, istället för att scrollbaren aktiveras...

Visa signatur

[[ CPU: P4 3 ghz @ 3,4 ghz, socket 478 ]] [[ Mobo: ASUS P4C800-E Deluxe ]] [[ 3*512 mb, pc3200 ]] [[ 2 * 120 gb S-ata, 1 * 200 gb IDE ]] [[ Asus 9600SE ]] [[ Logitech Z-5500 ]]

Permalänk

prova isf att lägga in din JTextArea i en JScrollPane.

JTextArea myTA = new JTextArea(x, y); JScrollPane mySP = new JScrollPane(myTA); frame.add(mySP);

Tror du borde förstå vad jag menar med koden

Visa signatur

2xHP w2207, Intel C2D E6750, Gigabyte P35-DS3, Corsair Twin2X2048-6400C4, XFX Geforce 8800GTS, 400GB HDD[br]
Athlon 64 3200+ "Winchester", ASUS A8N-SLI deluxe, Corsair TWINX1024-3200XL, XFX Geforce 6800GT@ULTRA, 160GB HDD