【发布时间】:2022-01-24 03:45:09
【问题描述】:
我有两个类,JFrame 类和用于单个面板的类(我将使用 CardLayout)。我的面板类扩展了我的 JFrame 类,但我希望能够在 JFrame 类中访问我的面板,以便我可以从那里将它添加到 JFrame。 (稍后我将从不同的 CardLayout 类执行此操作,但现在我从 JFrame 类执行此操作)。
这是面板类:
import java.awt.Font;
import javax.swing.*;
import javax.swing.border.Border;
public class ECLoginPanel extends ECFrame {
public JPanel LoginPanel;
public JButton login;
public JButton signup;
public ECLoginPanel() {
Color darkblue = new Color(24, 40, 85);
Color lightblue = new Color(78, 159, 206);
Border emptyBorder = BorderFactory.createEmptyBorder();
login = new JButton("Login");
signup = new JButton("Signup");
LoginPanel.setBackground(darkblue);
LoginPanel.add(login);
LoginPanel.add(signup);
login.setFont(new Font("HelveticaNeue", Font.BOLD, 20));
login.setBackground(lightblue);
login.setFocusPainted(false);
login.setBorder(emptyBorder);
signup.setFont(new Font("HelveticaNeue", Font.BOLD, 20));
signup.setBackground(lightblue);
signup.setFocusPainted(false);
signup.setBorder(emptyBorder);
}
}
这是框架类:
import javax.swing.*;
public class ECFrame {
JFrame frame;
public ECFrame() {
frame = new JFrame("EasyChat v0.01");
frame.setSize(800,450);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
}
【问题讨论】:
-
frame.add(new ECLoginPanel());有什么问题? -
@MadProgrammer 当我在 JFrame 类中这样做时,.add 上出现错误,因为 ECLoginPanel 是一个类,而不是一个组件。当我只是做 frame.add(LoginPanel);我在 LoginPanel 上收到错误,因为它无法解析为变量。
-
将
extends ECFrame改为extends JPanel,同时确保导入正确 -
@MadProgrammer 非常感谢,但它仍然无法正常工作,我遇到了同样的错误。
-
您的问题表明,您可能会从一些基本的 Swing 教程中受益,以了解 GUI 的构建方式以及支持其完成方式的逻辑。您可以在此处找到 Swing 教程和其他 Swing 资源的链接:Swing Info