hi, habe nun das problem, dass ich durch ein component, dem frame den spielernamen hinzufüge ( mit drawString). danach habe ich den frame mit validate() geupdatet. wenn ich allerdings zuerst spielername1 und dann durch die slebe componente spielername2 hinzufüge und dann validate() schreibe, wird nur spielername 2 angezeigt. wie kann ich es machen, dass beide angezeigt werden??? hier mal der quelltext:
die Componente:
und hier die klasse mit dem frame:
die Componente:
Code:
import javax.swing.*;
import java.awt.*;
public class blackJack_graphicComponent extends JComponent
{
static String text;
static int x;
static int y;
public void paintComponent( Graphics g){
g.drawString(text, x, y);
}
und hier die klasse mit dem frame:
Code:
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))
{
PlayerName1 = TextPlayer1.getText();
blackJack.game_pvpc();
blackJack_graphicComponent.x = 37;
blackJack_graphicComponent.y = 37;
blackJack_graphicComponent blackJack_graphiccomponent = new blackJack_graphicComponent();
blackJack_graphicComponent.text = PlayerName1;
blackJack_grafik.f1.getContentPane().add( blackJack_graphiccomponent );
setVisible(false);
blackJack_grafik.f1.validate();
}
else if((cgroup1.getSelectedCheckbox() == checkbox_multi))
{
PlayerName1 = TextPlayer1.getText(); //<---
PlayerName2 = TextPlayer2.getText(); //<---
blackJack.game_pvp(); //<---
blackJack_graphicComponent.x = 37; //<---
blackJack_graphicComponent.y = 37; //<---
blackJack_graphicComponent blackJack_graphiccomponent = new blackJack_graphicComponent();
blackJack_graphicComponent.text = PlayerName1; //<---
blackJack_grafik.f1.getContentPane().add( blackJack_graphiccomponent ); /* f1 ist der frame in der klasse blackJack_grafik*/
blackJack_graphicComponent.x = 700;
blackJack_graphicComponent.y = 37;
blackJack_graphicComponent.text = PlayerName2;
blackJack_grafik.f1.getContentPane().add( blackJack_graphiccomponent );
setVisible(false);
blackJack_grafik.f1.validate(); //und wenn ich das ausführe, wird nur PlayerName2 angezeigt
}
}
});
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);
}
}