0
因此,我正在使用gui进行研究任务,如果选择“输入”,则在左侧面板“输入”,“处理”和“显示”上有3个框CardLayout那么第一个面板显示在右边,将“屏幕显示”被选中,则显示最后一个面板,但我不能得到“处理”这部分显示:在卡片布局中制作某些面板
public void actionPerformed(ActionEvent event) {
// show first card
if (event.getSource() == controls[ 0 ])
cardManager.first(deck);
else if (event.getSource() == controls[ 1 ])
cardManager.show(card2Panel(), "c2");
// show previous card
else if (event.getSource() == controls[ 2 ])
cardManager.last(deck);
在它的代码是输入表格:
import java.awt.*;
import java.awt.event。 ; import javax.swing。;
公共类BookCentre延伸的JFrame实现的ActionListener {
private CardLayout cardManager;
private JPanel deck;
private JButton controls[];
private String names[] = { "Input", "Processing", "Display"};
public BookCentre(){
super("CardLayout");
Container container = getContentPane();
deck = new JPanel();
cardManager = new CardLayout();
deck.setLayout(cardManager);
deck.add(card1Panel(), "c1");
deck.add(card2Panel(), "c2");
deck.add(card3Panel(), "c3");
JPanel buttons = new JPanel();
buttons.setLayout(new GridLayout(2, 2));
controls = new JButton[ names.length ];
for (int count = 0; count < controls.length; count++) {
controls[ count ] = new JButton(names[ count ]);
controls[ count ].addActionListener(this);
buttons.add(controls[ count ]);
container.add(buttons, BorderLayout.WEST);
container.add(deck, BorderLayout.EAST);
setSize(450, 200);
setVisible(true);}
}
public JPanel card1Panel(){
JLabel label1 = new JLabel("card one", SwingConstants.CENTER);
JPanel card1 = new JPanel();
card1.add(label1);
return card1;
}
public JPanel card2Panel(){
JLabel label2 = new JLabel("card two", SwingConstants.CENTER);
JPanel card2 = new JPanel();
card2.setBackground(Color.yellow);
card2.add(label2);
return card2;
}
public JPanel card3Panel(){
JLabel label3 = new JLabel("card three");
JPanel card3 = new JPanel();
card3.setLayout(new BorderLayout());
card3.add(new JButton("North"), BorderLayout.NORTH);
card3.add(new JButton("West"), BorderLayout.WEST);
card3.add(new JButton("East"), BorderLayout.EAST);
card3.add(new JButton("South"), BorderLayout.SOUTH);
card3.add(label3, BorderLayout.CENTER);
return card3;
}
public void actionPerformed(ActionEvent event) {
// show first card
if (event.getSource() == controls[ 0 ])
cardManager.first(deck);
else if (event.getSource() == controls[ 1 ])
cardManager.show(card2Panel(), "c2");
// show previous card
else if (event.getSource() == controls[ 2 ])
cardManager.last(deck);
}
public static void main(String args[]) {
BookCentre cardDeckDemo = new BookCentre();
cardDeckDemo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}
在公共无效的actionPerformed我能够使用cardManager.first,接下来,以前的,过去的。我只想要显示“处理”面板,但不是用户首先看,最后一个或者骑自行车穿过所有面板。
这正是我所需要的,不能相信我错过了这么简单的东西,谢谢! – Clozecall