0

下面是我的 guiFrames 用户类。我想要一个用方法创建几个 JFrame 并将这些方法传递给 cardLayout 的类。这样做的原因是每个 JFrame 将根据用户选择的内容显示不同的按钮。

所以,我想我会为各个面板创建方法,并根据传递的参数显示不同的按钮。我需要将面板显示在 cardLayout 中。但我无法将传递方法传递给 cardLayout.add(); 因为它说方法类型无效。所以我试图让该方法返回一个组件,但它没有成功。请帮忙。

        import javax.swing.*;
import java.awt.*;

public class guiFrames extends JFrame{

  public guiFrames(){
  }

  public Component inputFrame(){
    JFrame inputFrame = new JFrame("Input");

    JPanel inputPnl = new JPanel();
    inputPnl.setLayout(new GridLayout(3,2));

    JLabel loginLbl = new JLabel("Login");
    inputPnl.add(loginLbl);
    JTextField loginTxt = new JTextField();
    inputPnl.add(loginTxt);
    JLabel pwLbl = new JLabel("Password");
    inputPnl.add(pwLbl);
    JTextField pwTxt = new JTextField();
    inputPnl.add(pwTxt);

    JPanel buttonPnl = new JPanel();
    buttonPnl.setLayout(new FlowLayout(FlowLayout.LEFT, 1,5));

    JButton submit = new JButton("Submit");
    buttonPnl.add(submit);
    JButton output = new JButton("Output");
    buttonPnl.add(output);

    JPanel container = new JPanel();
    container.setLayout(new BorderLayout());
    container.add(inputPnl, BorderLayout.CENTER);
    container.add(buttonPnl, BorderLayout.SOUTH);

    inputFrame.add(container);
    inputFrame.pack();
    inputFrame.setVisible(true);
    inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    return;
  }

  public void cardView(){
        JFrame cardFrame = new JFrame();
        JPanel cardGUI = new JPanel();
        CardLayout cards = new CardLayout();
        cardGUI.setLayout(cards);
        cardGUI.add(inputFrame(), "first");

        cardFrame.add(cardGUI, BorderLayout.CENTER);
        cardFrame.pack();
        cardFrame.setVisible(true);
        cardFrame.setDefaultCloseOperation(cardFrame.EXIT_ON_CLOSE);
  }
}
4

1 回答 1

3

在 inputFrame() 结束时,您不会返回任何内容。您需要返回 inputFrame,如下所示:

return inputFrame;

希望有帮助。

于 2013-03-28T18:46:05.443 回答