hi, also ich hab da ne frage. und zwar: ich habe in meinem Frame ein JMenu. in dem menu hab ich ein item namens "Optionen". Wenn ich das Programm starte wird die Methode MenuOne gestartet. in ihr kann man auswählen ob man SinglePlayer oder Multipayer spielen will und gibt dann je nach dem Spielernamen ein. Die werden anschließend in den Frame gezeichnet. Wenn ich nun im Menu auf Optionen klicke, öffnet sich wieder die Methode "MenuOne". wenn ich in ihr jetzt andere namen eingeben und auf ok klicke, werden die alten einfach überschrieben, also man sieht alle namen übereinander. Was kann ich machen, dass die ersten namen gelöscht werden und die neu eingegebenen gezeichnet werden ohne, dass sich die überkreuzen? hier mal der code
Code:
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class blackJack_grafik
{
JMenuBar mbar = new JMenuBar();
JMenu Datei = new JMenu("Datei");
JMenu Hilfe = new JMenu("?");
JMenuItem nSpiel = new JMenuItem("Neues Spiel");
JMenuItem options = new JMenuItem("Optionen");
JMenuItem close = new JMenuItem("Beenden");
JMenuItem about = new JMenuItem("About");
JMenuItem help = new JMenuItem("Hilfe");
static JFrame f1;
public blackJack_grafik()
{
Listener listener = new Listener();
close.addActionListener(listener);
options.addActionListener(listener);
about.addActionListener(listener);
f1 = new JFrame("Black Jack");
f1.setSize( 800, 600 );
f1.setResizable( false );
f1.setJMenuBar(mbar);
f1.getContentPane().setBackground(Color.green);
f1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
mbar.add(Datei);
mbar.add(Hilfe);
Datei.add(nSpiel);
Datei.add(options);
Datei.add(close);
Hilfe.add(about);
Hilfe.add(help);
f1.show();
}
private class Listener implements ActionListener{
public void actionPerformed( ActionEvent e ){
Object src = e.getSource();
if(src == close)
{
System.exit(0);
}
if(src == about)
{
AboutWindow windowAbout = new AboutWindow();
}
if(src == options)
{
MenuOne menu_one = new MenuOne();
menu_one.setVisible(true);
}
}
}
}
Code:
/**
* Write a description of class MenuOne here.
*
* @author (your name)
* @version (a version number or a date)
*/
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuOne extends JFrame
{
static String PlayerName1;
static String PlayerName2;
static CheckboxGroup cgroup1;
static JButton button1 = new JButton("Play");
static JTextField TextPlayer1 = new JTextField("Player1");
static JTextField TextPlayer2 = new JTextField("Player2");
static Checkbox checkbox_single, checkbox_multi;
public MenuOne()
{
super("Options");
Label fill1, fill2, fill3, fill4, fill5, fill6, fill7, fill8, fill9, fill10;
setSize(300,300);
setResizable(false);
getContentPane().setLayout(new GridLayout(3,3));
getContentPane().add(fill1 = new Label());
getContentPane().add(fill2 = new Label("Namen:"));
getContentPane().add(fill3 = new Label());
Menu1 Panel1 = new Menu1();
Menu2 Panel2 = new Menu2();
button1.setBackground(Color.BLACK);
button1.setForeground(Color.WHITE);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if((cgroup1.getSelectedCheckbox() == checkbox_single))
{
blackJack_graphicComponent bgComponentPlayer1 = new blackJack_graphicComponent();
PlayerName1 = TextPlayer1.getText();
blackJack.game_pvpc();
bgComponentPlayer1.setLocation(37, 37);
bgComponentPlayer1.setText(PlayerName1);
blackJack_grafik.f1.getContentPane().add( bgComponentPlayer1 );
setVisible(false);
blackJack_grafik.f1.validate();
}
else if((cgroup1.getSelectedCheckbox() == checkbox_multi))
{
PlayerName1 = TextPlayer1.getText();
PlayerName2 = TextPlayer2.getText();
blackJack_graphicComponent bgComponent1 = new blackJack_graphicComponent();
blackJack_graphicComponent bgComponent2 = new blackJack_graphicComponent();
blackJack.game_pvp();
bgComponent1.setLocation(37, 37);
bgComponent1.setText(PlayerName1);
blackJack_grafik.f1.getContentPane().add( bgComponent1 );
blackJack_grafik.f1.validate();
bgComponent2.setLocation(700, 37);
bgComponent2.setText(PlayerName2);
blackJack_grafik.f1.getContentPane().add( bgComponent2 );
setVisible(false);
blackJack_grafik.f1.validate();
}
}
});
getContentPane().add(Panel1);
getContentPane().add(Panel2);
getContentPane().add(fill4 = new Label());
getContentPane().add(fill5 = new Label());
getContentPane().add(button1);
getContentPane().add(fill6 = new Label());
setVisible(true);
}
public void itemStateChanged(ItemEvent e){
if(e.getItemSelectable() == checkbox_single){
System.out.println("es geht");
}
}
public static void main(String args[])
{
MenuOne menuone = new MenuOne();
}
}
class Menu1 extends Panel
{
Menu1()
{
MenuOne.cgroup1 = new CheckboxGroup();
add(MenuOne.checkbox_single = new Checkbox("Singleplayer",MenuOne.cgroup1, true));
add(MenuOne.checkbox_multi = new Checkbox("Multiplayer",MenuOne.cgroup1, false));
}
}
class Menu2 extends Panel
{
Menu2()
{
MenuOne.TextPlayer1.setBackground(Color.BLACK);
MenuOne.TextPlayer1.setForeground(Color.WHITE);
MenuOne.TextPlayer2.setBackground(Color.BLACK);
MenuOne.TextPlayer2.setForeground(Color.WHITE);
add(MenuOne.TextPlayer1);
add(MenuOne.TextPlayer2);
}
}
Code:
import javax.swing.*;
import java.awt.*;
public class blackJack_graphicComponent extends JComponent
{
private String text;
private int x;
private int y;
public void paintComponent( Graphics g){
g.drawString(text, x, y);
}
public void setText( String text ){ this.text = text; }
public void setLocation( int x, int y ){
this.x = x;
this.y = y;
}
}