2013-06-05, 11:31
  #1
Medlem
binics avatar
Gr det p ngot smidigt i AWT/Swing att justera hjden p en textarea. Jag har en rad dr det finns flt fr indata och tv rader under med textarea, totalt tre rader. Det r hjden i de tv nedersta raderna (se x nedan) som jag behver kunna justera. Om man helt enkelt kunde dra i x fr att justera hjdstorleken s hade det lst mitt problem. Jag kr med GridBagLayout nu.

--------------------------------
rad 1 indata flt
--------------------------------
rad 2 textarea 1
-------------x------------------
rad 3 textarea 2
--------------------------------
Citera
2013-06-05, 11:47
  #2
Medlem
Cognitive Dissidents avatar
Justera nr du skriver koden eller nr du kr programmet?

Jag r en total nybrjare p programmering och har mer eller mindre samma problem. Kollat p en del lsningar i stil med http://mydoggy.sourceforge.net/ och http://dock.javaforge.com/ men de har knts lite bkiga fr mig som nybrjare.
Letat omkring en del i swing utan att hitta nt, vilket knns lite mrkligt faktiskt.
Citera
2013-06-05, 12:38
  #3
Medlem
binics avatar
Citat:
Ursprungligen postat av Cognitive Dissident
Justera nr du skriver koden eller nr du kr programmet?

Jag r en total nybrjare p programmering och har mer eller mindre samma problem. Kollat p en del lsningar i stil med http://mydoggy.sourceforge.net/ och http://dock.javaforge.com/ men de har knts lite bkiga fr mig som nybrjare.
Letat omkring en del i swing utan att hitta nt, vilket knns lite mrkligt faktiskt.

Eftersom bda mina textarea kan innehlla mycket text s vill jag att anvndaren ska kunna justera hjden i dessa s att det d blir lttare att lsa. Knner inte till de lsningarna du nmnde, fr kolla upp de.

Man kanske kan ha ngot mouse event som dynamiskt ndrar storleken p textarean?
Citera
2013-06-05, 13:09
  #4
Moderator
Protons avatar
De flesta verkar fresprka att anvnda nulllayout fr att lsa problemet, samma mnniskor sger ven att det r en dlig ide att anvnda nulllayout, det kan jag hlla med om.

Ett annat stt du br vervga r att "wrappa" din JTextArea i en JScrollPane, d behver du ju inte visa upp hela textarean hela tiden, utan kan scrolla den efter behov istllet.

http://www.coderanch.com/t/333711/GU...izing-TextArea
Citera
2013-06-05, 14:14
  #5
Medlem
binics avatar
Citat:
Ursprungligen postat av Proton
De flesta verkar fresprka att anvnda nulllayout fr att lsa problemet, samma mnniskor sger ven att det r en dlig ide att anvnda nulllayout, det kan jag hlla med om.

Ett annat stt du br vervga r att "wrappa" din JTextArea i en JScrollPane, d behver du ju inte visa upp hela textarean hela tiden, utan kan scrolla den efter behov istllet.

http://www.coderanch.com/t/333711/GU...izing-TextArea

Jag la till main i coderanch exemplet du skickade men storleken ndras p hela fnstret och inte textarean i sig.
Kod:
import java.awt.*;  
import java.awt.event.*;  
import javax.swing.*;  
  
public class Frame1 extends JFrame {  
private JFrame frame;

public static void main(String args[]) {  
Frame1 window = new Frame1();  
window.setTitle("Frame1");  
window.setSize(800, 600);  
window.setVisible(true);  
} 

  JPanel contentPane;  
  GridBagLayout gridBagLayout1 = new GridBagLayout();  
  JScrollPane jScrollPane1 = new JScrollPane();  
  JTextArea jTextArea1 = new JTextArea();  
  JPanel jPanel1 = new JPanel();  
  JButton jButton1 = new JButton();  
  //Den Frame konstruieren  
  public Frame1() {  
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);  
    try {  
      jbInit();  
    }  
    catch(Exception e) {  
      e.printStackTrace();  
    }  
  }  
  //Initialisierung der Komponenten  
  private void jbInit() throws Exception  {  
    //setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Ihr Symbol]")));  
    contentPane = (JPanel) this.getContentPane();  
    contentPane.setLayout(gridBagLayout1);  
    this.setSize(new Dimension(400, 300));  
    this.setTitle("Frame-Titel");
    jTextArea1.setText("jTextArea1");  
    jButton1.setText("jButton1");  
    jButton1.addActionListener(new java.awt.event.ActionListener() {  
      public void actionPerformed(ActionEvent e) {  
        jButton1_actionPerformed(e);  
      }  
    });  
    contentPane.add(jScrollPane1,              new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0  
            ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));  
    contentPane.add(jPanel1,          new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0  
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));  
    jPanel1.add(jButton1, null);  
    jScrollPane1.getViewport().add(jTextArea1, null);  
  }  
  //�berschrieben, so da� eine Beendigung beim Schlie�en des Fensters m�glich ist.  
  protected void processWindowEvent(WindowEvent e) {  
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {  
      System.exit(0);  
    }  
  }  
  void jButton1_actionPerformed(ActionEvent e) {  
    Dimension dim = this.getSize();  
    dim.width = dim.width + 100;  
    dim.height = dim.height + 100;  
    this.setSize(dim);  
    this.validateTree();  
  }  
} 

Jag anvnder JScrollPane till textarean men hade grna sett att storleken gick att ndra ocks.
__________________
Senast redigerad av binic 2013-06-05 kl. 14:18.
Citera
2013-06-05, 22:13
  #6
Medlem
dethalvabarnets avatar
Varfr inte springlayout fr? Det r vl excel liknande effekt nr man resizar en rad du r ute efter?
Citera
2013-06-06, 17:19
  #7
Medlem
Jooncs avatar
Citat:
Ursprungligen postat av binic
Gr det p ngot smidigt i AWT/Swing att justera hjden p en textarea. Jag har en rad dr det finns flt fr indata och tv rader under med textarea, totalt tre rader. Det r hjden i de tv nedersta raderna (se x nedan) som jag behver kunna justera. Om man helt enkelt kunde dra i x fr att justera hjdstorleken s hade det lst mitt problem. Jag kr med GridBagLayout nu.

--------------------------------
rad 1 indata flt
--------------------------------
rad 2 textarea 1
-------------x------------------
rad 3 textarea 2
--------------------------------

Har du prvat med JSplitPane?
Om du anvnder fljande kod s fr du det hr resultatet:
http://imageshack.us/photo/my-images/6/exempeld.png/

Kod:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class 
SplitExample extends JFrame {
  protected 
JSplitPane split;

  public 
SplitExample() {
    
super("Test");
    
getContentPane().setLayout(new BorderLayout());
    
JTextArea north = new JTextArea("TextArea1");
    
JScrollPane northScroll = new JScrollPane(north);
    
JTextArea south = new JTextArea("TextArea2");
    
JScrollPane southScroll = new JScrollPane(south);
    

    
split = new JSplitPane(JSplitPane.VERTICAL_SPLITnorthScrollsouthScroll);
    
split.setContinuousLayout(false);
    
split.setOneTouchExpandable(true);
    
split.setPreferredSize(new Dimension(400,400));

    
getContentPane().add(splitBorderLayout.CENTER);

    
JLabel lbl = new JLabel("rad 1 indata flt");
    
JTextField txt = new JTextField("INPUT");
    
JButton btn = new JButton("En knapp ocks kanske?");
    
txt.setPreferredSize(new Dimension(200txt.getPreferredSize().height));
    
JPanel pnlInput = new JPanel(new FlowLayout(FlowLayout.LEFT));
    
pnlInput.add(lbl);
    
pnlInput.add(txt);
    
pnlInput.add(btn);
    
getContentPane().add(pnlInputBorderLayout.NORTH);
    
pack();
    
setVisible(true);
    
Dimension dim Toolkit.getDefaultToolkit().getScreenSize();
    
this.setLocation(dim.width/2-this.getSize().width/2dim.height/2-this.getSize().height/2); //centering
    
split.setDividerLocation(0.5); // 50/50
  
}

  public static 
void main(String argv[]) {
    new 
SplitExample();
  }

__________________
Senast redigerad av Joonc 2013-06-06 kl. 17:26. Anledning: ScrollPane
Citera
2013-06-06, 20:07
  #8
Medlem
binics avatar
Citat:
Ursprungligen postat av Joonc
Har du prvat med JSplitPane?
Om du anvnder fljande kod s fr du det hr resultatet:
http://imageshack.us/photo/my-images/6/exempeld.png/

Kod:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class 
SplitExample extends JFrame {
  protected 
JSplitPane split;

  public 
SplitExample() {
    
super("Test");
    
getContentPane().setLayout(new BorderLayout());
    
JTextArea north = new JTextArea("TextArea1");
    
JScrollPane northScroll = new JScrollPane(north);
    
JTextArea south = new JTextArea("TextArea2");
    
JScrollPane southScroll = new JScrollPane(south);
    

    
split = new JSplitPane(JSplitPane.VERTICAL_SPLITnorthScrollsouthScroll);
    
split.setContinuousLayout(false);
    
split.setOneTouchExpandable(true);
    
split.setPreferredSize(new Dimension(400,400));

    
getContentPane().add(splitBorderLayout.CENTER);

    
JLabel lbl = new JLabel("rad 1 indata flt");
    
JTextField txt = new JTextField("INPUT");
    
JButton btn = new JButton("En knapp ocks kanske?");
    
txt.setPreferredSize(new Dimension(200txt.getPreferredSize().height));
    
JPanel pnlInput = new JPanel(new FlowLayout(FlowLayout.LEFT));
    
pnlInput.add(lbl);
    
pnlInput.add(txt);
    
pnlInput.add(btn);
    
getContentPane().add(pnlInputBorderLayout.NORTH);
    
pack();
    
setVisible(true);
    
Dimension dim Toolkit.getDefaultToolkit().getScreenSize();
    
this.setLocation(dim.width/2-this.getSize().width/2dim.height/2-this.getSize().height/2); //centering
    
split.setDividerLocation(0.5); // 50/50
  
}

  public static 
void main(String argv[]) {
    new 
SplitExample();
  }


Det var precis det jag var ute efter, tack s jtte mycket!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in