JFrame in JFrame öffnen

yax

Bekanntes Mitglied
Hallo,

ich bin grad dabei mir einen Kalender zu schreiben. Ich habe bis jetzt 2 Klassen, einmal Juni und einmal Juli. Wie kann ich dann, wenn ich Juni auf habe, und auf den Button witer drücke, Juli im selbem Frame öffnen?

Gruß Yax.

PS: Ich hoffe das ihr mir schnell Antworten könnt. 😀
 
Ich kann dir auch nicht mehr sagen, weil ich nicht weiß, wie du dein Fenster aufgebaut hast.
Minimaler Input erzeugt nicht zwangsläufig auch eine zufriedenstellende Antwort...
 
Vielleicht hilft dir das ja weiter mir zu helfen 😀

Klasse Juni:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 20.06.2010
  * @author
  */

public class Juni2010 extends JFrame {
  // Anfang Attribute
   JFrame jFrame = new JFrame();
   JPanel jPanel1 = new JPanel(null);
     JButton jButton1 = new JButton();
     JButton jButton2 = new JButton();
     JButton jButton3 = new JButton();
     JButton jButton4 = new JButton();
     JButton jButton5 = new JButton();
     JButton jButton6 = new JButton();
     JButton jButton7 = new JButton();
     JButton jButton8 = new JButton();
     JButton jButton9 = new JButton();
     JButton jButton10 = new JButton();
     JButton jButton11 = new JButton();
     JButton jButton12 = new JButton();
     JButton jButton13 = new JButton();
     JButton jButton14 = new JButton();
     JButton jButton15 = new JButton();
     JButton jButton16 = new JButton();
     JButton jButton17 = new JButton();
     JButton jButton18 = new JButton();
     JButton jButton19 = new JButton();
     JButton jButton20 = new JButton();
     JButton jButton21 = new JButton();
     JButton jButton22 = new JButton();
     JButton jButton23 = new JButton();
     JButton jButton24 = new JButton();
     JButton jButton25 = new JButton();
     JButton jButton26 = new JButton();
     JButton jButton27 = new JButton();
     JButton jButton28 = new JButton();
     JButton jButton29 = new JButton();
     JButton jButton30 = new JButton();
     JButton jButton31 = new JButton();
     JButton jButton32 = new JButton();
     JButton jButton33 = new JButton();
     JLabel jLabel1 = new JLabel();
     JLabel jLabel2 = new JLabel();
     JLabel jLabel3 = new JLabel();
     JLabel jLabel4 = new JLabel();
     JLabel jLabel5 = new JLabel();
     JLabel jLabel6 = new JLabel();
     JLabel jLabel7 = new JLabel();
  // Ende Attribute

  public Juni2010(String title) {
    // Frame-Initialisierung
    super(title);
    jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 550;
    int frameHeight = 380;
    jFrame.setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    jFrame.setLocation(x, y);


    jFrame.setLayout(null);

    // Anfang Komponenten
    jFrame.add(jPanel1);
    jPanel1.setBounds(32, 8, 481, 321);

    jButton1.setBounds(88, 112, 57, 33);
    jButton1.setText("1");

    jPanel1.add(jButton1);
    jButton2.setBounds(152, 112, 59, 33);
    jButton2.setText("2");

    jPanel1.add(jButton2);
    jButton3.setBounds(216, 112, 57, 33);
    jButton3.setText("3");

    jPanel1.add(jButton3);
    jButton4.setBounds(280, 112, 57, 33);
    jButton4.setText("4");

    jPanel1.add(jButton4);
    jButton5.setBounds(344, 112, 57, 33);
    jButton5.setText("5");

    jPanel1.add(jButton5);
    jButton6.setBounds(408, 112, 57, 33);
    jButton6.setText("6");

    jPanel1.add(jButton6);
    jButton7.setBounds(152, 152, 57, 33);
    jButton7.setText("7");

    jPanel1.add(jButton7);
    jButton8.setBounds(88, 152, 57, 33);
    jButton8.setText("8");

    jPanel1.add(jButton8);
    jButton9.setBounds(24, 152, 57, 33);
    jButton9.setText("9");

    jPanel1.add(jButton9);
    jButton10.setBounds(216, 152, 57, 33);
    jButton10.setText("10");

    jPanel1.add(jButton10);
    jButton11.setBounds(280, 152, 57, 33);
    jButton11.setText("11");

    jPanel1.add(jButton11);
    jButton12.setBounds(344, 152, 57, 33);
    jButton12.setText("12");

    jPanel1.add(jButton12);
    jButton13.setBounds(408, 152, 57, 33);
    jButton13.setText("13");

    jPanel1.add(jButton13);
    jButton14.setBounds(24, 192, 57, 33);
    jButton14.setText("14");

    jPanel1.add(jButton14);
    jButton15.setBounds(88, 192, 57, 33);
    jButton15.setText("15");

    jPanel1.add(jButton15);
    jButton16.setBounds(152, 192, 57, 33);
    jButton16.setText("16");

    jPanel1.add(jButton16);
    jButton17.setBounds(216, 192, 57, 33);
    jButton17.setText("17");

    jPanel1.add(jButton17);
    jButton18.setBounds(280, 192, 57, 33);
    jButton18.setText("18");

    jPanel1.add(jButton18);
    jButton19.setBounds(344, 192, 57, 33);
    jButton19.setText("19");

    jPanel1.add(jButton19);
    jButton20.setBounds(408, 192, 57, 33);
    jButton20.setText("20");

    jPanel1.add(jButton20);
    jButton21.setBounds(24, 232, 57, 33);
    jButton21.setText("21");

    jPanel1.add(jButton21);
    jButton22.setBounds(88, 232, 57, 33);
    jButton22.setText("22");

    jPanel1.add(jButton22);
    jButton23.setBounds(152, 232, 57, 33);
    jButton23.setText("23");

    jPanel1.add(jButton23);
    jButton24.setBounds(216, 232, 57, 33);
    jButton24.setText("24");

    jPanel1.add(jButton24);
    jButton25.setBounds(280, 232, 57, 33);
    jButton25.setText("25");

    jPanel1.add(jButton25);
    jButton26.setBounds(344, 232, 57, 33);
    jButton26.setText("26");

    jPanel1.add(jButton26);
    jButton27.setBounds(408, 232, 57, 33);
    jButton27.setText("27");

    jPanel1.add(jButton27);
    jButton28.setBounds(24, 272, 57, 33);
    jButton28.setText("28");

    jPanel1.add(jButton28);
    jButton29.setBounds(88, 272, 57, 33);
    jButton29.setText("29");

    jPanel1.add(jButton29);
    jButton30.setBounds(152, 272, 57, 33);
    jButton30.setText("30");

    jPanel1.add(jButton30);
    jButton31.setBounds(152, 32, 169, 33);
    jButton31.setText("Juni 2010");

    jPanel1.add(jButton31);
    jButton32.setBounds(328, 32, 57, 33);
    jButton32.setText(">>");
    jButton32.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton32_ActionPerformed(evt);
      }
    });
    jPanel1.add(jButton32);
    jButton33.setBounds(88, 32, 57, 33);
    jButton33.setText("<<");
    jButton33.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton33_ActionPerformed(evt);
      }
    });
    jPanel1.add(jButton33);
    jLabel1.setBounds(32, 88, 22, 16);
    jLabel1.setText("Mo");
    jLabel1.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel1);
    jLabel2.setBounds(96, 88, 16, 16);
    jLabel2.setText("Di");
    jLabel2.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel2);
    jLabel3.setBounds(160, 88, 17, 16);
    jLabel3.setText("Mi");
    jLabel3.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel3);
    jLabel4.setBounds(224, 88, 21, 16);
    jLabel4.setText("Do");
    jLabel4.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel4);
    jLabel5.setBounds(288, 88, 15, 16);
    jLabel5.setText("Fr");
    jLabel5.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel5);
    jLabel6.setBounds(352, 88, 20, 16);
    jLabel6.setText("Sa");
    jLabel6.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel6);
    jLabel7.setBounds(416, 88, 20, 16);
    jLabel7.setText("So");
    jLabel7.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel7);
    // Ende Komponenten

    jFrame.setResizable(true);
    jFrame.setVisible(true);
  }

  // Anfang Methoden
  public void jButton32_ActionPerformed(ActionEvent evt) {
     Juli2010 j = new Juli2010("");


  }

  public void jButton33_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  // Ende Methoden

  public static void main(String[] args) {
    new Juni2010("Juni2010");
  }
}

Klasse Juni:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 20.06.2010
  * @author
  */

public class Juli2010 extends JFrame {
  // Anfang Attribute
  JFrame jFrame1 = new JFrame();
  JPanel jPanel1 = new JPanel(null);
     JButton jButton1 = new JButton();
     JButton jButton2 = new JButton();
     JButton jButton3 = new JButton();
     JButton jButton4 = new JButton();
     JButton jButton5 = new JButton();
     JButton jButton6 = new JButton();
     JButton jButton7 = new JButton();
     JButton jButton8 = new JButton();
     JButton jButton9 = new JButton();
     JButton jButton10 = new JButton();
     JButton jButton11 = new JButton();
     JButton jButton12 = new JButton();
     JButton jButton13 = new JButton();
     JButton jButton14 = new JButton();
     JButton jButton15 = new JButton();
     JButton jButton16 = new JButton();
     JButton jButton17 = new JButton();
     JButton jButton18 = new JButton();
     JButton jButton19 = new JButton();
     JButton jButton20 = new JButton();
     JButton jButton21 = new JButton();
     JButton jButton22 = new JButton();
     JButton jButton23 = new JButton();
     JButton jButton24 = new JButton();
     JButton jButton25 = new JButton();
     JButton jButton26 = new JButton();
     JButton jButton27 = new JButton();
     JButton jButton28 = new JButton();
     JButton jButton29 = new JButton();
     JButton jButton30 = new JButton();
     JButton jButton31 = new JButton();
     JButton jButton32 = new JButton();
     JButton jButton33 = new JButton();
     JButton jButton34 = new JButton();
     JLabel jLabel1 = new JLabel();
     JLabel jLabel2 = new JLabel();
     JLabel jLabel3 = new JLabel();
     JLabel jLabel4 = new JLabel();
     JLabel jLabel5 = new JLabel();
     JLabel jLabel6 = new JLabel();
     JLabel jLabel7 = new JLabel();
  // Ende Attribute

  public Juli2010(String title) {
    // Frame-Initialisierung
    super(title);
    jFrame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 550;
    int frameHeight = 380;
    jFrame1.setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    jFrame1.setLocation(x, y);
    jFrame1.setLayout(null);
    // Anfang Komponenten


    jFrame1.add(jPanel1);

    jPanel1.setBounds(32, 8, 481, 321);
    jFrame1.add(jPanel1);
    jButton1.setBounds(216, 112, 59, 33);
    jButton1.setText("1");

    jPanel1.add(jButton1);
    jButton2.setBounds(280, 112, 57, 33);
    jButton2.setText("2");

    jPanel1.add(jButton2);
    jButton3.setBounds(344, 112, 57, 33);
    jButton3.setText("3");

    jPanel1.add(jButton3);
    jButton4.setBounds(408, 112, 57, 33);
    jButton4.setText("4");

    jPanel1.add(jButton4);
    jButton5.setBounds(24, 152, 57, 33);
    jButton5.setText("5");

    jPanel1.add(jButton5);
    jButton6.setBounds(88, 152, 57, 33);
    jButton6.setText("6");

    jPanel1.add(jButton6);
    jButton7.setBounds(152, 152, 57, 33);
    jButton7.setText("7");

    jPanel1.add(jButton7);
    jButton8.setBounds(216, 152, 57, 33);
    jButton8.setText("8");

    jPanel1.add(jButton8);
    jButton9.setBounds(280, 152, 57, 33);
    jButton9.setText("9");

    jPanel1.add(jButton9);
    jButton10.setBounds(344, 152, 57, 33);
    jButton10.setText("10");

    jPanel1.add(jButton10);
    jButton11.setBounds(408, 152, 57, 33);
    jButton11.setText("11");

    jPanel1.add(jButton11);
    jButton12.setBounds(24, 192, 57, 33);
    jButton12.setText("12");

    jPanel1.add(jButton12);
    jButton13.setBounds(88, 192, 57, 33);
    jButton13.setText("13");

    jPanel1.add(jButton13);
    jButton14.setBounds(152, 192, 57, 33);
    jButton14.setText("14");

    jPanel1.add(jButton14);
    jButton15.setBounds(216, 192, 57, 33);
    jButton15.setText("15");

    jPanel1.add(jButton15);
    jButton16.setBounds(280, 192, 57, 33);
    jButton16.setText("16");

    jPanel1.add(jButton16);
    jButton17.setBounds(344, 192, 57, 33);
    jButton17.setText("17");

    jPanel1.add(jButton17);
    jButton18.setBounds(408, 192, 57, 33);
    jButton18.setText("18");

    jPanel1.add(jButton18);
    jButton19.setBounds(24, 232, 57, 33);
    jButton19.setText("19");

    jPanel1.add(jButton19);
    jButton20.setBounds(88, 232, 57, 33);
    jButton20.setText("20");

    jPanel1.add(jButton20);
    jButton21.setBounds(152, 232, 57, 33);
    jButton21.setText("21");

    jPanel1.add(jButton21);
    jButton22.setBounds(216, 232, 57, 33);
    jButton22.setText("22");

    jPanel1.add(jButton22);
    jButton23.setBounds(280, 232, 57, 33);
    jButton23.setText("23");

    jPanel1.add(jButton23);
    jButton24.setBounds(344, 232, 57, 33);
    jButton24.setText("24");

    jPanel1.add(jButton24);
    jButton25.setBounds(408, 232, 57, 33);
    jButton25.setText("25");

    jPanel1.add(jButton25);
    jButton26.setBounds(24, 272, 59, 33);
    jButton26.setText("26");

    jPanel1.add(jButton26);
    jButton27.setBounds(88, 272, 57, 33);
    jButton27.setText("27");

    jPanel1.add(jButton27);
    jButton28.setBounds(152, 272, 57, 33);
    jButton28.setText("28");

    jPanel1.add(jButton28);
    jButton29.setBounds(216, 272, 57, 33);
    jButton29.setText("29");

    jPanel1.add(jButton29);
    jButton30.setBounds(280, 272, 57, 33);
    jButton30.setText("30");

    jPanel1.add(jButton30);
    jButton31.setBounds(344, 272, 57, 33);
    jButton31.setText("31");

    jPanel1.add(jButton31);
    jButton32.setBounds(169, 33, 152, 32);
    jButton32.setText("Juli 2010");
    jButton32.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton32_ActionPerformed(evt);
      }
    });
    jPanel1.add(jButton32);
    jButton33.setBounds(328, 33, 57, 32);
    jButton33.setText(">>");
    jButton33.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton33_ActionPerformed(evt);
      }
    });
    jPanel1.add(jButton33);
    jButton34.setBounds(105, 33, 57, 32);
    jButton34.setText("<<");
    jButton34.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton34_ActionPerformed(evt);
      }
    });
    jPanel1.add(jButton34);
    jLabel1.setBounds(224, 88, 21, 16);
    jLabel1.setText("Do");
    jLabel1.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel1);
    jLabel2.setBounds(288, 88, 15, 16);
    jLabel2.setText("Fr");
    jLabel2.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel2);
    jLabel3.setBounds(352, 88, 20, 16);
    jLabel3.setText("Sa");
    jLabel3.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel3);
    jLabel4.setBounds(416, 88, 20, 16);
    jLabel4.setText("So");
    jLabel4.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel4);
    jLabel5.setBounds(160, 88, 17, 16);
    jLabel5.setText("Mi");
    jLabel5.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel5);
    jLabel6.setBounds(96, 88, 16, 16);
    jLabel6.setText("Di");
    jLabel6.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel6);
    jLabel7.setBounds(32, 88, 22, 16);
    jLabel7.setText("Mo");
    jLabel7.setFont(new Font("MS Sans Serif", Font.BOLD, 13));
    jPanel1.add(jLabel7);
    // Ende Komponenten

    jFrame1.setResizable(true);
    jFrame1.setVisible(true);

  }

  // Anfang Methoden



  public void jButton32_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void jButton33_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void jButton34_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  // Ende Methoden

  public static void main(String[] args) {
    new Juli2010("Juli2010");
  }
}

So, ich möchte jetzt wenn ich Juni öffne, und auf weiter klicke, dass dann Juni im selbem Fenster erscheint.
 
Zur Zeit ist es so, dass du zwei JFrames gebaut hast. Diese JFrames stellen jeder für sich ein selbstständiges Programm dar, würden also beide (je nach Aufruf) eine eigene VM starten.

Eine Anwendung sollte immer nur einen JFrame haben. GUI-Elemente sollten auf JPanels angeordnet werden. Man kann auch JPanels verschachteln. LayoutManager helfen beim Anordnen der Komponenten.

Zum Austausch von Inhalten (JPanels) kann man mit dem CardLayout recht komfortabel arbeiten.
Da solltest du dich einarbeiten. Speziell in die Benutzung von LayoutManagern. Das "NullLayout" ist fast immer eine schlechte Lösung.
 
Vielleicht eine kleine Info vorweg: Benutze einen Layoutmanager um deine Gui zu gestalten. Das spart dir später viele Probleme und Zeit. Es erfordert zwar etwas Arbeit in der Einarbeitung ist aber für eine gute Gui unumgänglich.
mfg
Eldorado

Edit: *mal wieder zu langsam* 😀
 
Okay ich habe das jetzt schon seit 2 stunden mit dem CardLayout ausprobiert, ich hab alles gelesen, aber wie immer bekomme ich es nicht hin. !!!

Kann mir vielleicht jemand nochmal ausführlich die anwendund des CardLayouts erklären??
 
How to Use CardLayout
Oder hier ein bisschen DemoCode
Java:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CardLayoutDemo extends JFrame implements ActionListener {
	private CardLayout layout;
	
	public CardLayoutDemo() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(0, 0, 500, 300);
		this.setLocationRelativeTo(null);
		
		layout = new CardLayout();
		this.getContentPane().setLayout(layout);
		this.getContentPane().add("CARDONE", new CardOne(this));
		this.getContentPane().add("CARDTWO", new CardTwo(this));
		this.getContentPane().add("CARDTHREE", new CardThree(this));
		this.getContentPane().add("CARDTWOSUB", new CardTwoSub(this));
	}
	
	public static void main(String[] args) {
		new CardLayoutDemo().setVisible(true);
	}

	public void actionPerformed(ActionEvent evt) {
		flipCard(evt.getActionCommand());
	}
	
	private void flipCard(String name) {
		System.out.println(name);
		layout.show(this.getContentPane(), name);
	}
}

class CardOne extends JPanel {
	public CardOne(ActionListener listener) {
		this.setLayout(new BorderLayout());
		
		JButton button = new JButton("Weiter");
		button.setActionCommand("CARDTWO");
		button.addActionListener(listener);
		this.add(button, BorderLayout.EAST);
		
		this.add(new JLabel(this.getClass().getName(), JLabel.CENTER), BorderLayout.CENTER);
	}
}

class CardTwo extends JPanel {
	public CardTwo(ActionListener listener) {
		this.setLayout(new BorderLayout());
		
		JButton button = new JButton("Weiter");
		button.setActionCommand("CARDTHREE");
		button.addActionListener(listener);
		this.add(button, BorderLayout.EAST);
		
		button = new JButton("Zurück");
		button.setActionCommand("CARDONE");
		button.addActionListener(listener);
		this.add(button, BorderLayout.WEST);
		
		button = new JButton("Runter");
		button.setActionCommand("CARDTWOSUB");
		button.addActionListener(listener);
		this.add(button, BorderLayout.SOUTH);
		
		this.add(new JLabel(this.getClass().getName(), JLabel.CENTER), BorderLayout.CENTER);
	}
}

class CardTwoSub extends JPanel {
	public CardTwoSub(ActionListener listener) {
		this.setLayout(new BorderLayout());
		
		JButton button = new JButton("Zurück");
		button.setActionCommand("CARDTWO");
		button.addActionListener(listener);
		this.add(button, BorderLayout.NORTH);
		
		this.add(new JLabel(this.getClass().getName(), JLabel.CENTER), BorderLayout.CENTER);
	}
}

class CardThree extends JPanel {
	public CardThree(ActionListener listener) {
		this.setLayout(new BorderLayout());
		
		JButton button = new JButton("Ende");
		button.setActionCommand("CARDONE");
		button.addActionListener(listener);
		this.add(button, BorderLayout.EAST);
		
		button = new JButton("Zurück");
		button.setActionCommand("CARDTWO");
		button.addActionListener(listener);
		this.add(button, BorderLayout.WEST);
		
		this.add(new JLabel(this.getClass().getName(), JLabel.CENTER), BorderLayout.CENTER);
	}
}
 
Es tut mir sehr leid, aber ich versteh es einfach nicht. -_-

Gibt es denn nicht noch eine andere elegante (und auch einfachere) Lösung??

Ich bin echt am verzweifeln.
 
Gibt es denn nicht noch eine andere elegante (und auch einfachere) Lösung??
Man könnte das ganze richtig programmieren ;-)

Du kannst doch die zwei Panels die Du in den beiden Klassen mit den Komponenten befüllst auf eine Kompontene mit einem CardLayout einfügen. In dem Code Bsp ist ja dann aufgezeigt wie man dann von einer "Ansicht" zur nächsten wechselt --> mittels Aufruf von show(Elternkomponente, Elementname) am LayoutManager.
 
So ich habe jetzt versucht ein eigenen kleinen CardLayout-Versuch gemacht, doch irgendetwas ist daran falsch. ABER ich weiß einfach nicht was .

Code1:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 22.06.2010
  * @author
  */

public class Kalender extends JFrame {
  // Anfang Attribute
  JPanel haupt;
  JPanel card;
  JLabel l1;
  JLabel l2;
  JButton next;
  private kalendert k = new kalendert("");
  private CardLayout cards;
  // Ende Attribute

  public Kalender(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    setSize(500, 400);
    setLocationRelativeTo(null);


    // Anfang Komponenten
    haupt = new JPanel(new BorderLayout());
    haupt.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    
    next = new JButton("Weiter");
    next.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            cards.next(card);
         }
      });


    l1 = new JLabel("HI");


    cards = new CardLayout();
    card = new JPanel(cards);
    card.setBorder(BorderFactory.createEmptyBorder(20,0,0,0));

    card.add(k);

    haupt.add(next,BorderLayout.EAST);
    haupt.add(card, BorderLayout.CENTER);
    add(haupt, BorderLayout.CENTER);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
    try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {}

    new Kalender("Kalender");
  }
}

code2:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 22.06.2010
  * @author
  */

public class kalendert extends Panel {
  // Anfang Attribute
  JLabel l1 = new JLabel("HelloHello");
  // Ende Attribute

  public kalendert(String Title) {

    setLayout(new BorderLayout());
    
    JPanel panel = new JPanel(new GridLayout(0, 1));
      panel.setBorder(BorderFactory.createEmptyBorder(0, 60, 30, 20));
      
    add(l1);

  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
    new kalendert("kalendert");
  }
}
 
Oh ich hab selber den Fehler gefunden. Ich hätte bei

Java:
card.add(k);

das schreiben müssen :
Java:
card.add(k, BorderLayout.SOUTH);


aber vielen vielen Dank an eure guten Tipps und Danke für die viele Geduld 😉

Gruß yax.
 
Heey,

ich hab jetzt noch zum Inhaltlichen eine Frage, wie kann ich bei den Folgenden Code Juli, eine überschrift "Juli 2010" machen. Also so dass sie alleine an oberster stelle steht (über den Tagen). ???

Juli:
Java:
import javax.swing.*;
import java.awt.*;

public class juli extends JPanel{
  JLabel juli = new JLabel("Juli 2010");
  JLabel nix = new JLabel("      ");
  JLabel mo = new JLabel("  Montag");
  JLabel di = new JLabel("Dienstag");
  JLabel mi = new JLabel("  Mittwoch");
  private JLabel don = new JLabel("Donnerstag");
  JLabel fr = new JLabel("   Freitag");
  JLabel sa = new JLabel("Samstag");
  JLabel so = new JLabel("Sonntag");
  JLabel nix2 = new JLabel("     ");
  JLabel nix3 = new JLabel("     ");
  JButton b1 = new JButton("1");
  JButton b2 = new JButton("2");
  JButton b3 = new JButton("3");
  JButton b4 = new JButton("4");
  JButton b5 = new JButton("5");
  JButton b6 = new JButton("6");
  JButton b7 = new JButton("7");
  JButton b8 = new JButton("8");
  JButton b9 = new JButton("9");
  JButton b10 = new JButton("10");
  JButton b11 = new JButton("11");
  JButton b12 = new JButton("12");
  JButton b13 = new JButton("13");
  JButton b14 = new JButton("14");
  JButton b15 = new JButton("15");
  JButton b16 = new JButton("16");
  JButton b17 = new JButton("17");
  JButton b18 = new JButton("18");
  JButton b19 = new JButton("19");
  JButton b20 = new JButton("20");
  JButton b21 = new JButton("21");
  JButton b22 = new JButton("22");
  JButton b23 = new JButton("23");
  JButton b24 = new JButton("24");
  JButton b25 = new JButton("25");
  JButton b26 = new JButton("26");
  JButton b27 = new JButton("27");
  JButton b28 = new JButton("28");
  JButton b29 = new JButton("29");
  JButton b30 = new JButton("30");
  JButton b31 = new JButton("31");
  public juli(){
    setLayout(new BorderLayout());

    JPanel panel = new JPanel( new GridLayout(6,30));
     panel.setBorder(BorderFactory.createEmptyBorder());
     panel.setOpaque( false );

    panel.add(mo);
    panel.add(di);
    panel.add(mi);
    panel.add(don);
    panel.add(fr);
    panel.add(sa);
    panel.add(so);
    panel.add(nix);
    panel.add(nix2);
    panel.add(nix3);
    panel.add(b1);
    panel.add(b2);
    panel.add(b3);
    panel.add(b4);
    panel.add(b5);
    panel.add(b6);
    panel.add(b7);
    panel.add(b8);
    panel.add(b9);
    panel.add(b10);
    panel.add(b11);
    panel.add(b12);
    panel.add(b13);
    panel.add(b14);
    panel.add(b15);
    panel.add(b16);
    panel.add(b17);
    panel.add(b18);
    panel.add(b19);
    panel.add(b20);
    panel.add(b21);
    panel.add(b22);
    panel.add(b23);
    panel.add(b24);
    panel.add(b25);
    panel.add(b26);
    panel.add(b27);
    panel.add(b28);
    panel.add(b29);
    panel.add(b30);
    panel.add(b31);

    add(panel, BorderLayout.CENTER);


  }
}

Hier die dazugehörige Klasse um das programm Anzuzeigen:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 22.06.2010
  * @author
  */

public class Kalender extends JFrame {


  // Anfang Attribute
  private CardLayout cards = new CardLayout();
  private JPanel main = new JPanel(new BorderLayout());
  private JPanel monate = new JPanel(cards);
  private JButton weiter = new JButton(">>");
  private JButton zurück = new JButton("<<");
  private juni la;
  private juli jl;
  // Ende Attribute

  public Kalender(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);
    setSize(600,400);
    

    main.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    
    weiter.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            cards.next(monate);
         }
      });
      
    zurück.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            cards.previous(monate);
         }
      });

    monate.setBorder(BorderFactory.createEtchedBorder());

    la = new juni();
    jl = new juli();

    monate.add(la, BorderLayout.NORTH);
    monate.add(jl, BorderLayout.NORTH);
    main.add(weiter, BorderLayout.EAST);
    main.add(zurück, BorderLayout.WEST);
    main.add(monate, BorderLayout.CENTER);
    add(main, BorderLayout.CENTER);
    // Anfang Komponenten

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
     try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {}


    new Kalender("Kalender");
  }
}

Ich bitte um eine schnelle Hilfe.
 
Erstmal vorweg ein "kleiner" Tipp um Quellcode zu vermindern: Du kannst Buttons genauso wie alle anderen Objekten in Arrays packen. Du kannst dann über schleifen Button erstellen und auch dem Panel hinzufügen:
Java:
JButton[] buttons = new JButton[31];
for (int i = 0; i < buttons.length; i++) {
    buttons[i] = new JButton("" + i+1);            
}
for (int i = 0; i < buttons.length; i++) {
    panel.add(buttons[i]);            
}
Eine Möglichkeit um deine Überschrift alleine in einer Zeile zu haben, wäre leer JLabel in die verbleibenden 5 "Zellen" zu adden.
mfg
Eldorado
 
Zuletzt bearbeitet:
Super gute Idee Eldorado,

aber wenn ich das mit dem Array anwende, habe ich immer auf jeden Button zum Beispiel anstatt 3 31 stehen. Wie kann ich das ändern?
 
Oh super, dankeschön, hast mir wirklich geholfen, denn ich fand mein code sah schon etwas komisch aus, aber ich hab halt keine andere Lösung gefunden 😀


Aber gibt es nicht noch eine elegantere Lösung für die überschrift, denn nach deiner Lösung (Eldorado), ist alles so eingequetscht und klein ? 😀
 
Zuletzt bearbeitet:
Und direkt noch eine Frage, wie kann ich meinen Kalender sagen dass er, wenn ich ihn öffne, den heutigen Tag makieren soll?
 
Und direkt noch eine Frage, wie kann ich meinen Kalender sagen dass er, wenn ich ihn öffne, den heutigen Tag makieren soll?

Vergiss das mit den Buttons, leg Dir ein gutes Buch zu bzw. lies im Internet entsprechend nach und verwende eine JTable ;-)

Wenn Du bei den Buttons bleiben willst: Woran erkennst Du, welcher Button den heutigen Tag repräsentiert? Ähnlich wie Du vorgehen würdest, muss auch Dein Programm vorgehen um den entsprechenden Button zu finden. Markieren kann man dann z.B. mit setBackground(Color.RED) oder ähnlichem.
 
neee ich möchte gerne meine Buttons behalten, aber wie kann ich das denn machen, dass meine kalender immer den aktuellen Tag (automatisch) weiß??
 
neee ich möchte gerne meine Buttons behalten, aber wie kann ich das denn machen, dass meine kalender immer den aktuellen Tag (automatisch) weiß??
Du musst ihm das akutelle Datum sagen bzw. auswerten lassen. Das aktuelle Datum bekommt man über ein ein Calendar oder Date-Objekt z.B.:
Java:
Calendar cal = Calendar.getInstance();
System.out.println("Heute ist der " + cal.get(Calendar.DAY_OF_MONTH) + "." + (cal.get(Calendar.MONTH)+1)+ ".");
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd.MM.yy");
System.out.println("Heute ist: " + sdf.format(cal.getTime()));
 
Aber wie binde ich das dann in meine Klasse ein??


Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.*;
import java.util.*;
import java.text.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 22.06.2010
  * @author
  */

public class Kalender extends JFrame {


  // Anfang Attribute
  private CardLayout cards = new CardLayout();
  private JPanel main = new JPanel(new BorderLayout());
  private JPanel monate = new JPanel(cards);
  private JButton weiter = new JButton(">>");
  private JButton zurück = new JButton("<<");
  private juni la;
  private juli jl;
  private august ag;
  private september st;
  private oktober a;
  private november n;
  private dezember d;
  private januar11 ja11;
  private februar11 fe11;
  // Ende Attribute

  public Kalender(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);
    setSize(600,400);
    
    Calendar cal = Calendar.getInstance();
    System.out.println("Heute ist der " + cal.get(Calendar.DAY_OF_MONTH) + "." + (cal.get(Calendar.MONTH)+1)+ ".");
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd.MM.yy");
    System.out.println("Heute ist: " + sdf.format(cal.getTime()));

    main.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    
    weiter.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            cards.next(monate);
         }
      });
      
    zurück.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            cards.previous(monate);
         }
      });

    monate.setBorder(BorderFactory.createEtchedBorder());

    la = new juni();
    jl = new juli();
    ag = new august();
    st = new september();
    a = new oktober();
    n = new november();
    d = new dezember();
    ja11 = new januar11();
    fe11 = new februar11();

    monate.add(la, BorderLayout.NORTH);
    monate.add(jl, BorderLayout.NORTH);
    monate.add(ag, BorderLayout.NORTH);
    monate.add(st, BorderLayout.NORTH);
    monate.add(a, BorderLayout.NORTH);
    monate.add(n, BorderLayout.NORTH);
    monate.add(d, BorderLayout.NORTH);
    monate.add(ja11, BorderLayout.NORTH);
    monate.add(fe11, BorderLayout.NORTH);
    main.add(weiter, BorderLayout.EAST);
    main.add(zurück, BorderLayout.WEST);
    main.add(monate, BorderLayout.CENTER);
    add(main, BorderLayout.CENTER);
    // Anfang Komponenten

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  // Ende Methoden

  public static void main(String[] args) {
     try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {}


    new Kalender("Kalender");
  }
}
 

Zurück
Oben