gpt4 book ai didi

java - 切换面板 - 卡片布局

转载 作者:行者123 更新时间:2023-12-02 02:10:40 30 4
gpt4 key购买 nike

我无法通过面板。

这是行:

cardLayout.show( cards, String.valueOf( "EXCEL_PANEL" ) );

我调用 EXCEL_PANEL 的显示方法,但它没有出现。我觉得这是一个令人盲目的错误。

我到底想要什么——整个程序将运行在相同的框架中,但我已经被同样的问题困扰了一个星期,我无法意识到。

还有一个问题。有谁知道如何通过按登录按钮来创建事件而不是继续此 block 中的其余部分?因为这只是开始,而且很烦人。

这是我的卡片布局类代码:

public class CardLayoutManager {

JPanel cards;
final static String LOGIN_PANEL = "Card with Login elements";
final static String EXCEL_PANEL = "Card with Excel load file element";

public void addComponentToPane(Container pane) throws IOException {

LoginPanel login_p = new LoginPanel();
ExcelPanel excel_p = new ExcelPanel();

cards = new JPanel( new CardLayout() );
cards.add( login_p, LOGIN_PANEL );
cards.add( excel_p, EXCEL_PANEL );

pane.add( cards, BorderLayout.CENTER );
CardLayout cardLayout = (CardLayout) (cards.getLayout());
cardLayout.show( cards, String.valueOf( login_p ) );

login_p.login_btn.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
boolean identification = login_p.LoginCheck();
if (!identification) {
JOptionPane.showMessageDialog( login_p, "Sorry, this user does not have access to the system.", "warning", JOptionPane.WARNING_MESSAGE );
login_p.ClearFields();
} else {
cardLayout.show( cards, String.valueOf( "EXCEL_PANEL" ) );
}
} catch (SQLException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
} );
}

private static void createAndShowGUI() throws IOException {
USTCFrame frame = new USTCFrame();
CardLayoutManager demo = new CardLayoutManager();
demo.addComponentToPane( frame.getContentPane() );
frame.setVisible( true );
}

public static void main(String[] args) {

try {
UIManager.setLookAndFeel( "javax.swing.plaf.metal.MetalLookAndFeel" );
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}

/* Turn off metal's use of bold fonts */
UIManager.put( "swing.boldMetal", Boolean.FALSE );

//Schedule a job for the event dispatch thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater( new Runnable() {
public void run() {
try {
createAndShowGUI();
} catch (IOException e) {
e.printStackTrace();
}
}
} );
}
}

最佳答案

您没有说明您的类 USTCFrameLoginPanelExcelPanel 是什么。所以我假设 USTCFrame 是 JFrame 的子类LoginPanelExcelPanelJPanel 的子类。

你的台词

cards = new JPanel( new CardLayout() );
cards.add( login_p, LOGIN_PANEL );
cards.add( excel_p, EXCEL_PANEL );

看起来很合理。但是你的线路

 cardLayout.show( cards, String.valueOf( login_p ) );

没有意义。相反,它应该是

cardLayout.show( cards, LOGIN_PANEL );

因为 cards.show(...) 的第二个参数应该是您在 cards.add(...) 中使用的字符串。

出于同样的原因,而不是

cardLayout.show( cards, String.valueOf( "EXCEL_PANEL" ) );

你应该写

cardLayout.show( cards, EXCEL_PANEL );

关于java - 切换面板 - 卡片布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50086346/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com