1
大家好,我對此有點問題。我創建了一個JPanel並添加了組件,然後將JPanel添加到容器中。現在當我從main調用這個類時,會彈出一個窗口,但它只顯示JPanel的第一個組件。爲什麼只顯示第一項而不是全部?謝謝。JPanel僅在添加到容器時才顯示一個組件
注意:這段代碼並不完整,我只是想弄明白爲什麼我的組件在展開其他事情之前沒有出現,請解決組件問題。
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.*;
import javax.swing.*;
public class Player extends JFrame implements ActionListener
{
private CardLayout playerCard;
private JPanel cardPanel;
public String player1;
public String player2;
// Constructor:
public Player()
{
setTitle("Game");
setSize(300,200);
setLocation(10,200);
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
//set up the panel
cardPanel = new JPanel();
playerCard = new CardLayout();
cardPanel.setLayout(playerCard);
//get player one name
JLabel p1Name = new JLabel("Player 1 Name:");
JTextField oneName = new JTextField();
//get the name for player 2
JLabel p2Name = new JLabel("Player 2 Name:");
JTextField twoName = new JTextField();
//the button to start the game
JButton start = new JButton("Start");
//add the components << Why is only the first component shown??
cardPanel.add(start);
cardPanel.add(p1Name);
cardPanel.add(oneName);
cardPanel.add(p2Name);
cardPanel.add(twoName);
contentPane.add("startCard",cardPanel);
}
@Override
public void actionPerformed(ActionEvent arg0)
{
// TODO Auto-generated method stub
}
}
我對'contentPane.add(「startCard」,cardPanel);':S – 2013-04-04 00:16:12
感到非常困惑。在我正在使用的書中指出 「CardLayout管理器使用給定的方法逐個顯示添加到其容器的組件,每個組件在添加到組件時都會分配一個字符串名稱,如下所示: 語法: 容器。 add(String_Name,Component);「 將其更改爲僅contentPane.add(cardPanel);沒有什麼區別。 – 2013-04-04 00:21:08
將組件添加到使用FlowLayout的容器時,請重新閱讀您的書籍,因爲您正在使用字符串。 – 2013-04-04 00:22:13