Frage von mcchecker1000, 48

Wie füge ich in java einen Button durch klicken dazu?

Hallo,

Ich habe ein JFrame wo ein Button beinhaltet. Mein Probelm ist das ich es nicht hinkriege das durch das drücken des Button ein weitere Button hinzugefügt wird und dieser Button auch noch da ist wenn man das Fenster wider schließt.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von DontHaveAName, 33

Wie soll der Button denn auch ohne dein Frame bestehen bleiben??

Erwartest du das der dann irgendwo auf deinem Desktop herumschwebt?

Wenn du es anders meinst...

Zeige deinen Quellcode und formuliere die Frage konkreter, denn ich verstehe den Sinn ehrlich gesagt nicht.

Kommentar von mcchecker1000 ,
public class PaintClass extends JFrame  implements ActionListener { 
private JButton button;
public static void main(String[] args){
PaintClass pc = new PaintClass();
pc.setSize(400,400);
pc.setVisible(true);
}
public PaintClass(){
super();
setDefaultCloseOperation(EXIT_ON_CLOSE);

button = new JButton("ADD");
button.setBounds(100,20,30,49);
button.addActionListener(this);

this.getContentPane().add(button);
}

public void actionPerformed(ActionEvent e) {
if(e.getSource() == button){
System.out.println("Button geklickt!");
}

}

Nein der Button soll in dem Frame bleiben.

Kommentar von DontHaveAName ,

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class PaintClass extends JFrame implements ActionListener
{
private JButton button;

public static void main(String[] args)
{
PaintClass pc = new PaintClass();
pc.setSize(400, 400);
pc.setVisible(true);
}

public PaintClass()
{
super();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());

button = new JButton("ADD");
button.setBounds(100, 20, 30, 49);
button.addActionListener(this);

this.getContentPane()
.add(button);
}

public void actionPerformed(ActionEvent e)
{
if (e.getSource() == button)
{
add(new JButton("Button"));
revalidate();
repaint();
}
}

}


Meinst du etwas so?

Edit:

Oh, habe gerade gelesen das du den neuen Button auch der neu Öffnung des Fensters weiterhin bestehen haben willst.

Dann solltest du das wohl wie Aerger9 gesagt hat machen

Bzw würde ich dir eine Liste mit Buttons und serialisierung empfehen.

Kommentar von mcchecker1000 ,

ja genau so was Danke 
Kannst du mir noch erläutern/erklären was 

revalidate();

repaint(); macht
Kommentar von DontHaveAName ,

Ich sehe gerade das du repaint gar nicht braucht. revalidate reicht vollkommen aus. 

https://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#revalidate()

Antwort
von Aerger9, 33

Um den Button hinzuzufügen, musst du ihn einfach im ActionListener des ersten Buttons, zu JFrame hinzufügen.

Um den Button bei einem Neustart des Programms immernoch zu haben, musst du die Information, dass der Button geaddet werden soll, in einer Datei speichern (z.B. Properties-Datei) und bei jedem Start prüfen, ob der Button direkt hinugefügt werden soll.

LG Aerger9

Kommentar von mcchecker1000 ,

okay Danke Probier ich aus wenn ich später Mittagspause habe.

Keine passende Antwort gefunden?

Fragen Sie die Community