Button nimmt das komplette Fenster ein?!

  • Themenstarter Themenstarter JoeyIsAwesome
  • Beginndatum Beginndatum
J

JoeyIsAwesome

Gast
So sieht der Code der Klasse "GUI" aus:

Java:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.util.*;
import java.awt.FlowLayout;

public class GUI extends JFrame{

	private static JTextField TextBox1;
	private JButton Button1;
	private JButton Button2;
	
	public GUI(){
		super("login");
		
		//Erstelle Alle Objekte (2 Buttons, 1 TextBox)
		TextBox1 = new JTextField(6);
		TextBox1.setBounds(40,50,200,25);
		TextBox1.setLocation(300,200);
		add(TextBox1);
		
		Button1 = new JButton("Start");
		add(Button1);
		Button1.setBounds(20,20,20,20);
		Button1.setLocation(100,100);
		
		Button2 = new JButton("Abbruch");
		add(Button2);
		Button2.setBounds(20,20,20,20);
		Button2.setLocation(100,100);
		
		// erstelle HandlerClass zum benutzen des Buttons
		HandlerClass handler = new HandlerClass();
		Button1.addActionListener(handler);
			
	}
	private class HandlerClass implements ActionListener{

		public void actionPerformed(ActionEvent arg0) {
			// Hier der Quellcode, was passieren soll wenn der Button gedrückt wird (Button1)
			String AlertTime = TextBox1.getText(); //Speichere den Text von TextBox1, also die AlarmZeit in dem String "AlertTime" (englisch für AlarmZeit)
			
			//Benutze das oben importierte Werkzeug "Calender" zum herrausfinden der Systemzeit
			java.util.Calendar today = new java.util.GregorianCalendar();
			int std = today.get(Calendar.HOUR_OF_DAY);
			int min = today.get(Calendar.MINUTE);
			int sec = today.get(Calendar.SECOND);
			//Erstelle eine Variable die die Systemzeit speichert
			double SysTime = std; ++ min; ++ sec;
			
			System.out.println("Systemzeit:" + SysTime);
			System.out.println("Alarmzeit:" + AlertTime);
		}
		
	}
	
}

Das ist der Code der Klasse "Main":

Java:
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
		
		GUI gui = new GUI();
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		gui.setSize(1000,700);
		gui.setVisible(true);
}
}

wenn ich das ganze jetzt ausführe, erscheint der Button "Abbrechen" so groß, das er das komplette fenster einnimmt. WARUM!?
 
du benutzt das "nulllayout" hast der gui aber das nicht mitgeteilt

ein gui.setLayout(null); wirds glaub ich tun bin aber jetzt nit der GUI überflieger
 
Zuletzt bearbeitet:
Du solltest dich mal mit LayoutManagern beschäftigen. Der JFrame hat per Standard (wenn du keinen anderen LayoutManager zuweist) das BorderLayout, d.h. wenn du einfach nur mit add() mehrere Komponenten hinzufügst, wird nur die letzte davon in den CENTER-Bereich gesetzt, und bei CENTER erstreckt sich die Komponente über den gesamten verfügbaren Raum. Beim BorderLayout kannst du nur jeweils 1 Komponente in 1 Bereich setzen (NORTH, SOUTH, WEST, EAST, CENTER). Wenn du aufwändigere Layouts haben möchtest, könntest du evtl. mehrere LayoutManager verschachteln. Vom Null-Layout ist eher abzuraten.
 

Zurück
Oben