Я добавляю ввод имени игрока в свою игру с роком, бумагой, ножницами, и насколько я знаю, я могу просто использовать другую карту с JTextField, создать строку, а затем использовать ее для замены «Player 1/Player 2.» Единственная проблема заключается в том, что когда я добавляю свои TextFields к панели, которая затем добавляется в файл cardLayout, который, наконец, добавляется в фрейм, все пусто. Вот пример кода.Почему мой макет карты пуст после добавления JTextField?
final CardLayout cardLayout = new CardLayout();
final JPanel cardPanel = new JPanel(cardLayout);
JPanel pname = new JPanel();
JTextField p1name = new JTextField(20);
JTextField p2name = new JTextField(20);
pname.add(p1name);
pname.add(p2name);
cardPanel.add(pname, "pname");
add(cardPanel);
cardLayout.show(cardPanel, "pname");
Я пробовал все, что нашел в Интернете. Я запускаю JRE 7, и в последний раз, когда я проверял, он отлично работал на JRE 6 (это, вероятно, изменилось к настоящему времени, так как я возился с ним.) Любая помощь приветствуется. Спасибо!
Полный код, плохо отступ (пытаюсь работать на моей аккуратности)
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.CardLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
public class RPS extends JFrame {
public static void main(String[] args) {
new RPS();
}
public RPS() {
super("Rock, Paper, Scissors");
setSize(300, 300);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//Adds all of the components.
final CardLayout cardLayout = new CardLayout();
final JPanel cardPanel = new JPanel(cardLayout);
JPanel pname = new JPanel();
JPanel panel1 = new JPanel();
JPanel panel2r = new JPanel();
JPanel panel2p = new JPanel();
JPanel panel2s = new JPanel();
JPanel finish = new JPanel();
final JButton P1Rock = new JButton("Rock");
final JButton P1Paper = new JButton("Paper");
final JButton P1Scissors = new JButton("Scissors");
final JButton P2Rockr = new JButton("Rock");
final JButton P2Paperr = new JButton("Paper");
final JButton P2Scissorsr = new JButton("Scissors");
final JButton P2Rockp = new JButton("Rock");
final JButton P2Paperp = new JButton("Paper");
final JButton P2Scissorsp = new JButton("Scissors");
final JButton P2Rocks = new JButton("Rock");
final JButton P2Papers = new JButton("Paper");
final JButton P2Scissorss = new JButton("Scissors");
final JButton playAgain = new JButton("Play again?");
final JLabel statusLabel = new JLabel(" ");
JTextField p1name = new JTextField(20);
JTextField p2name = new JTextField(20);
JLabel P1turn = new JLabel("It is Player 1's turn. Choose:");
JLabel P2turnr = new JLabel("It is Player 2's turn. Choose:");
JLabel P2turnp = new JLabel("It is Player 2's turn. Choose:");
JLabel P2turns = new JLabel("It is Player 2's turn. Choose:");
//Sets up and adds all of the panels.
pname.add(p1name);
pname.add(p2name);
panel1.add(P1turn);
panel1.add(P1Rock);
panel1.add(P1Paper);
panel1.add(P1Scissors);
panel1.setLayout(new GridLayout(4,1));
panel2r.add(P2turnr);
panel2r.add(P2Rockr);
panel2r.add(P2Paperr);
panel2r.add(P2Scissorsr);
panel2r.setLayout(new GridLayout(4,1));
panel2p.add(P2turnp);
panel2p.add(P2Rockp);
panel2p.add(P2Paperp);
panel2p.add(P2Scissorsp);
panel2p.setLayout(new GridLayout(4,1));
panel2s.add(P2turns);
panel2s.add(P2Rocks);
panel2s.add(P2Papers);
panel2s.add(P2Scissorss);
panel2s.setLayout(new GridLayout(4,1));
finish.add(statusLabel);
finish.add(playAgain);
finish.setLayout(new GridLayout(2,1));
cardPanel.add(pname, "pname");
cardPanel.add(panel1, "player1");
cardPanel.add(panel2r, "player2r");
cardPanel.add(panel2p, "player2p");
cardPanel.add(panel2s, "player2s");
cardPanel.add(finish, "finish");
add(cardPanel);
cardLayout.show(cardPanel, "pname");
//Determines player 1's choice.
P1Rock.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cardLayout.show(cardPanel, "player2r");
}
});
P1Paper.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cardLayout.show(cardPanel, "player2p");
}
});
P1Scissors.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cardLayout.show(cardPanel, "player2s");
}
});
playAgain.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
cardLayout.show(cardPanel, "player1");
}
});
//Determines player 2's choice and prints a result.
P2Rockr.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("It's a tie!");
cardLayout.show(cardPanel, "finish");
}
});
P2Paperr.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 2 wins! Paper covers Rock.");
cardLayout.show(cardPanel, "finish");
}
});
P2Scissorsr.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 1 wins! Rock crushes Scissors.");
cardLayout.show(cardPanel, "finish");
}
});
P2Rockp.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 1 wins! Paper covers Rock!");
cardLayout.show(cardPanel, "finish");
}
});
P2Paperp.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("It's a tie!");
cardLayout.show(cardPanel, "finish");
}
});
P2Scissorsp.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 2 wins! Scissors cut paper.");
cardLayout.show(cardPanel, "finish");
}
});
P2Rocks.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 2 wins! Rock crushes Scissors.");
cardLayout.show(cardPanel, "finish");
}
});
P2Papers.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("Player 1 wins! Scissors cut Paper.");
cardLayout.show(cardPanel, "finish");
}
});
P2Scissorss.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
statusLabel.setText("It's a tie!");
cardLayout.show(cardPanel, "finish");
}
});
}
}
EDIT: Просто протестировала его снова на моем JRE 6 ноутбука, без каких-либо проблем. Я начинаю думать, что проблема связана с моим рабочим столом. Мой компилятор - Dr. Java.
Почему у вас есть 12 различных кнопок? –
@peeskillet Кнопки имеют по существу карту с макетом карты, которая позволяет использовать кнопку воспроизведения и JButtons вместо JRadioButtons. – ZeroConnor