An passung von Textfeldern?

Status
Nicht offen für weitere Antworten.

Morpheus2100

Mitglied
Hi Leute,

hab diese Woche angefangen richtig mit Java zu arbeiten.
Hab mir ne kleine oberfläche gebastelt mit GridLayout und BorderLayout!

Jetzt hab ich folgendes Problem:
asdf.jpg


Ich möchte die Text eingabe felder schön schmal und gleich haben!
Ich hab gelesen in JFrame gibt es sowas wie "pack", jedoch wenn ich das bei meinem Frame machen will, macht er es so klein, dass überhauptnicht aus der Titel angezeigt wird!

Vielleicht könnt ihr mir auf die sprünge helfen!

DANKE
MFG
MIKE

[schild=2 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Ich kann nix![/schild]
 

The_S

Top Contributor
da hast du vermutlich einen fehler im Layout, dass pack() bei dir nichst nützt bzw. das so groß angezeigt wird. du kannst die größe deiner Komponenten mit setPreferredSize(Dimension) setzen. Oder die Größe deines Fensters mit setSize(); . Wenn du nicht glarkommst kannst du ja mal posten wie du die GUI erstellst (also code ;) )
 

Brainiac

Bekanntes Mitglied
Hab dir das mal umgestellt, das pack() sollte immer als letztes Erfolgen, damit auch bekannt ist, wie groß die einzelnen Komponenten sind. Wenn Du später noch was anhängst, kann pack() das nicht mehr berücksichtigen.

Hab Dir den Code mal ein wenig umgestellt:
Code:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.filechooser.*; 
import java.io.*; 

public class ExporterFrame extends JFrame { 
    JTextField tf01=new JTextField(6); 
    JTextField tf02=new JTextField(6); 

    public ExporterFrame(){ 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setTitle("Exporter"); 
        setLocation(500,400); 
       
        JPanel mainPanel=new JPanel(new BorderLayout()); 
        Choice cho; 
        cho=new Choice(); 
        cho.add("name1"); 
        cho.add("name2"); 
        cho.add("name3"); 
        mainPanel.add(cho, BorderLayout.NORTH); 
        JPanel datumpanel=new JPanel(new GridLayout(1,4)); 
        JLabel label1 = new JLabel(); 
        label1.setText("Von: "); 
        datumpanel.add(label1); 
        datumpanel.add(tf01); 
        JLabel label2 = new JLabel(); 
        label2.setText("Bis: "); 
        datumpanel.add(label2); 
        datumpanel.add(tf02); 

        JPanel p2=new JPanel(new BorderLayout()); 
        JButton bt01=new JButton("Export"); 
        bt01.setActionCommand("Save"); 
        bt01.addActionListener(new PushButtonActionListener(this)); 
        p2.add(bt01, "West"); 
        JButton bt02=new JButton("Exit"); 
        bt02.setActionCommand("Close"); 
        p2.add(bt02, "East"); 
       
        mainPanel.add(datumpanel, "Center"); 
        mainPanel.add(p2, "South"); 
        getContentPane().add(mainPanel); 

        setResizable(false); 
        setSize(300,200); 
        pack();
   } 

    public static void main(String ar[]) {
        new ExporterFrame().setVisible(true);
   }
}

class PushButtonActionListener implements ActionListener {
    JFrame f = null;

    public PushButtonActionListener(JFrame af) {
        this.f = af;
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getActionCommand()=="Save") {
            JFileChooser fc=new JFileChooser(System.getProperty("user.dir"));
            int fd=fc.showSaveDialog(f);
            try {
                if(fd==JFileChooser.APPROVE_OPTION) {
                    FileOutputStream fo=new FileOutputStream(fc.getSelectedFile());
                    PrintStream ps=new PrintStream(fo);
                    ps.close();
                    fo.close();
                }
            } catch(Exception ex){} 
        }
        else if (ae.getActionCommand()=="Close") {
         //System.exit(0);
        }
    }
}
 
G

Guest

Gast
So leider muss ich jetzt nochmal nachfragen?

Leider hat das ganze doch nicht so geklappt, wie ich mir das vorgestellt habe!

Wie kann ich denn die größe der Testfelder schön anpassen, schmaler und länger!

Was mach ich jetzt da eigentlich falsch?? Er passt sich irgendwie immer dem Boarderlayout an!

Code:
ExporterFrame(){
		
      JFrame f=new JFrame();
	    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setTitle("Exporter");
		f.setLocation(500,400);
		}
		
	    jcbName = new JComboBox(vName);
	    mainPanel.add(jcbName, BorderLayout.NORTH);
		
		
	    JPanel datumpanel=new JPanel(new GridLayout(1,4));
	    JLabel label1 = new JLabel();
	    label1.setText("Von:");
	    datumpanel.add(label1);
	    datumpanel.add(jtfDateFrom);
	      
	    JLabel label2 = new JLabel();
	    label2.setText("Bis:");
	    datumpanel.add(label2);
	    Dimension d = new Dimension(1,2);
	    jtfDateTo.setPreferredSize(d);
	    datumpanel.add(jtfDateTo);
	    
	    JPanel p2=new JPanel(new BorderLayout());
		JButton bt01=new JButton("Export");
		bt01.setActionCommand("Export");
		bt01.addActionListener(new PushButtonActionListener(f));
		
		p2.add(bt01, BorderLayout.WEST);
		JButton bt02=new JButton("Exit");
		bt02.setActionCommand("Close");
		bt02.addActionListener(new PushButtonActionListener(f));
		p2.add(bt02, BorderLayout.EAST);
	    
		mainPanel.add(datumpanel, BorderLayout.CENTER);
		mainPanel.add(p2, BorderLayout.SOUTH);
	    f.getContentPane().add(mainPanel);
	    f.setResizable(false);
		f.setVisible(true);
		f.setSize(300,200);
		//f.pack();
		
	}

Bitte helft mir nochmal, ich flipp gleich aus!

DANKE
MFG
MIKE
 

metalfan

Aktives Mitglied
javaforum1.png


Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class testcase {

	public testcase()
	{
		JFrame frame1 = new JFrame();
		frame1.setSize(500,500);
		frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Box mainbox = Box.createVerticalBox();
		Box box1 = Box.createHorizontalBox();
		JComboBox combobox1 = new JComboBox();
		box1.add(combobox1);
		mainbox.add(box1);
		mainbox.add(Box.createVerticalStrut(5)); // Abstand zur nächsten "Reihe"
		Box box2 = Box.createHorizontalBox();
		JLabel label1 = new JLabel("Von: ");
		box2.add(label1);
		JTextField textfield1 = new JTextField();
		box2.add(textfield1);
		JLabel label2 = new JLabel("Bis: ");
		box2.add(label2);
		JTextField textfield2 = new JTextField();
		box2.add(textfield2);
		mainbox.add(box2);
		mainbox.add(Box.createVerticalStrut(5)); // Abstand zur nächsten "Reihe"
		Box box3 = Box.createHorizontalBox();
		box3.add(Box.createHorizontalGlue()); //Zieht die beiden Buttons nach rechts
		JButton button1 = new JButton("Übernehmen");
		box3.add(button1);
		box3.add(Box.createHorizontalStrut(5)); //Abstand zwischen den Buttons
		JButton button2 = new JButton("Abbrechen");
		box3.add(button2);
		mainbox.add(box3);
		mainbox.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
		frame1.getContentPane().add(mainbox, BorderLayout.NORTH);
		frame1.setVisible(true);
	}
	
	public static void main(String[] args) 
	{
		new testcase();
	}
}

Hab das ganze ein bisschen geändert, kleine Erklärung:
Ganz unten liegt ein BorderLayout auf den JFrame, gleich dadrüber liegt eine Vertikale Box (Box.createVerticalBox) (ordnet die Komponenten untereinander an). Zu dieser mainbox füge ich Horizontale Boxen (Box.createHorizontalBox) (orndet die Komponenten von links nach rechts nebeneinander) hinzu, pro Reihe eine Box. In diesen Boxen liegen dann deine Komponenten.

[EDIT]
Habe grade festgestellt das das ganze nur durch setSize(500,500) aussieht, imho sollte das besser werden wenn die ComboBox Inhalt hat...aber sollte nicht wenigstens die Höhe des JFrames passen auch ohne setSize() ?

Mfg
metalfan
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Breite von Textfeldern trotz Layoutmanager Java Basics - Anfänger-Themen 4
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
Anfänger2011 Auslesen von 2 Textfeldern Java Basics - Anfänger-Themen 4
T Summen von Textfeldern Java Basics - Anfänger-Themen 3
J Aktivierung eines Buttons nach Eingabe in Textfeldern (DocumentListener) Java Basics - Anfänger-Themen 4
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
C Text aus Textfeldern auslesen Java Basics - Anfänger-Themen 8
F Erstellung eines Fensters mit Button und Textfeldern Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
M Cut, Copy und Paste mit mehreren Textfeldern? Java Basics - Anfänger-Themen 3
G Hinweis bei Änderung des Inhalts in Textfeldern? Java Basics - Anfänger-Themen 4
D Inhalt von erzeugten Textfeldern holen. Java Basics - Anfänger-Themen 10
W Bilder als Hintergrund bei Textfeldern? Java Basics - Anfänger-Themen 2
R Entfernen von Textfeldern Java Basics - Anfänger-Themen 7
G Mehreren Textfeldern Zeichenketten zuweisen Java Basics - Anfänger-Themen 3
A ActionListener bei Textfeldern? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben