Probleme mit GUI

Status
Nicht offen für weitere Antworten.

speedy

Mitglied
hi, ich versuche jetzt schon den halben nachmittag eine einfache gui zu erstellen und irgendwie klappt das überhaupt nicht.
ich habe hier meinen code gepostet, könnte mir bitte jemand verrraten, warum das nicht geht?
vielleicht kann man es erkennen, wenn nicht, ich möchte 3 eingabefelder haben und jeweil über den feldern ein label. unten rechts soll der speicherbutton sein.
vielen dank schonmal.

Code:
package GUI;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class GUI extends JFrame{
  static int breite = 450, hoehe = 400;
  Container cp;              
  Label kennziffer, artikellabel, ueberschrift; 
  TextField ta, ta2;
  TextArea artikel;
  
  public GUI(){
    super("Doku anlegen"); 
	//textPanel1
	JPanel textPanel1 = new JPanel();
	Label kennziffer = new Label ("Kennziffer");
	ta = new TextField();
	textPanel1.add(kennziffer, BorderLayout.NORTH);
	textPanel1.add(ta, BorderLayout.SOUTH);
	
	//textPanel2
	JPanel textPanel2 = new JPanel();
	Label ueberschrift = new Label ("Überschrift");
	ta2 = new TextField();
	textPanel2.add(ueberschrift, BorderLayout.NORTH);
	textPanel2.add(ta2, BorderLayout.SOUTH);
	
	//textPanel3
	Panel textPanel3 = new Panel(new BorderLayout());
	Label artikellabel = new Label ("Artikel");
	artikel = new TextArea();		
	JButton speichern = new JButton("SPEICHERN");
	speichern.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent arg0) {
			//dbaufruf();
		}});
	textPanel3.add(artikellabel, BorderLayout.NORTH);
	textPanel3.add(artikel, BorderLayout.WEST);
	textPanel3.add(speichern, BorderLayout.SOUTH);
	
	//mainPanel
	JPanel mainPanel = new JPanel(new BorderLayout());
	mainPanel.add(textPanel1, BorderLayout.NORTH);
	mainPanel.add(textPanel2, BorderLayout.CENTER);
	mainPanel.add(textPanel3, BorderLayout.SOUTH);
	this.getContentPane().add(mainPanel);
}


  public static void main(String args[]){
  GUI g = new GUI();
    g.setDefaultCloseOperation(EXIT_ON_CLOSE); // Schließen
    g.setSize(breite,hoehe);
    g.show();
  }

}
 

DesertFox

Bekanntes Mitglied
Du mischst AWT & Swing, ich habs jetzt nicht probiert und deinen Code nicht ganz gelesen, aber mir ist gleich aufgefallen, dass du von JFrame erbst, aber all deine Komponenten AWT sind. Mache mal alles in Swing (musste fast überall nur vor dir Componenten ein "J" schreiben).
 

speedy

Mitglied
danke, erstmal für den tipp. hab das eben versucht, aber jetzt sieht es noch seltsamer aus als vorher :?
 

mic_checker

Top Contributor
speedy hat gesagt.:
hi, ich versuche jetzt schon den halben nachmittag eine einfache gui zu erstellen und irgendwie klappt das überhaupt nicht.
ich habe hier meinen code gepostet, könnte mir bitte jemand verrraten, warum das nicht geht?
vielleicht kann man es erkennen, wenn nicht, ich möchte 3 eingabefelder haben und jeweil über den feldern ein label. unten rechts soll der speicherbutton sein.
vielen dank schonmal.

Code:
package GUI;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class GUI extends JFrame{
  static int breite = 450, hoehe = 400;
  Container cp;              
  Label kennziffer, artikellabel, ueberschrift; 
  TextField ta, ta2;
  TextArea artikel;
  
  public GUI(){
    super("Doku anlegen"); 
	//textPanel1
	JPanel textPanel1 = new JPanel();
	Label kennziffer = new Label ("Kennziffer");
	ta = new TextField();
	textPanel1.add(kennziffer, BorderLayout.NORTH);
	textPanel1.add(ta, BorderLayout.SOUTH);
	

	//textPanel2
	JPanel textPanel2 = new JPanel();
	Label ueberschrift = new Label ("Überschrift");
	ta2 = new TextField();
	textPanel2.add(ueberschrift, BorderLayout.NORTH);
	textPanel2.add(ta2, BorderLayout.SOUTH);

Hier setzt du für beide Panel nicht explizit das Layout, also z.B. setLayout(new BorderLayout()); Vielleicht liegt es daran....
 

speedy

Mitglied
vielen dank, daran lag es.
ein problem, hab ich allerdings noch, der speicher- button geht über die ganze zeile. woran könnte das liegen?
 
B

Beni

Gast
Ich empfehle GridBagLayout gerührt, nicht geschüttelt:
(In "Java ist auch eine Insel" ist ein Kapitelchen über das GridBagLayout drin).
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Test5 extends JFrame{
  JTextField ta, ta2;
  JTextArea artikel;
 
  public Test5(){
    super("Doku anlegen");
    
    JPanel fields = new JPanel( new GridBagLayout() );
    
    GridBagConstraints labels = new GridBagConstraints( 0, 0, 1, 1, 1.0, 1.0, 
    		GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets( 2, 2, 2, 2 ), 0, 0 );
    GridBagConstraints text = new GridBagConstraints( 1, 0, 1, 1, 100.0, 2.0, 
    		GridBagConstraints.FIRST_LINE_START, GridBagConstraints.BOTH, new Insets( 2, 2, 2, 2 ), 0, 0 );

    ta = new JTextField();
    ta2 = new JTextField();
    artikel = new JTextArea();
    
    fields.add( new JLabel( "Kennziffer"), labels );
    fields.add( ta, text );
    
    labels.gridy = 1;
    text.gridy = 1;
    fields.add( new JLabel( "Überschrift"), labels );
    fields.add( ta2, text );

    labels.gridy = 2;
    text.gridy = 2;
    text.weighty = 100.0;
    fields.add( new JLabel( "Artikel"), labels );
    fields.add( new JScrollPane( artikel ), text );
   
    JButton speichern = new JButton("SPEICHERN");
    speichern.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent arg0) {
          //dbaufruf();
       }
     });
    
    Container content = getContentPane();
    content.setLayout( new GridBagLayout() );
    content.add( fields, new GridBagConstraints( 0, 0, 1, 1, 10.0, 10.0, GridBagConstraints.FIRST_LINE_START,
    		GridBagConstraints.BOTH, new Insets( 1, 1, 1, 1 ), 0, 0 ));
    content.add( speichern, new GridBagConstraints( 0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.LAST_LINE_END,
    		GridBagConstraints.NONE, new Insets( 3, 3, 3, 3 ), 0, 0 ));
}


  public static void main(String args[]){
  Test5 g = new Test5();
    g.setDefaultCloseOperation(EXIT_ON_CLOSE); // Schließen
    g.setSize( 500, 500 );
    g.setLocationRelativeTo( null );
    g.setVisible( true );
  }

}
 

mic_checker

Top Contributor
geht sicher auch anders, aber wenn du den Button auf Panel hinzufügst und das Panel in den SOUTH (statt Button allein) , müsst es eigentlich gehen....
 

speedy

Mitglied
hallo leute, das programm funktioniert jetzt soweit. jetzt bin ich an den schönheitsarbeiten ;)
könnt ihr mir einen tipp geben, wie ich in der textarea einen automatischen zeilenumbruch erzwingen kann?
im moment hab ich einen scrollbalken unter dem feld was allerdings nicht unbedingt schön ist...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben