[英]Accesing a JPanel variable from another class in Java Swing
我有两个类,JFrame class 和 class 用于单个面板(我将使用 CardLayout)。 My panel class extends my JFrame class, but I want to be able to access my panel in the JFrame class so that I can add it to the JFrame from there. (稍后我将从不同的 CardLayout class 执行此操作,但现在我从 JFrame 类执行此操作)。
这是面板 class:
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);
}
}
这是框架 class:
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);
}
}
似乎您需要将LoginPanel
添加到frame
。
您的ECLoginPanel
已经有一个frame
(因为它是从ECFrame
继承的)。
所以你只需要调用frame.add(LoginPanel);
(假设您的两个类都在同一个包中)作为ECLoginPanel
的构造函数的最后一行。
但是您将frame
设置为在 ECFrame 的构造函数中可见(在ECFrame
的构造函数之前ECLoginPanel
),因此您还应该在添加LoginPanel
后重新验证并重新绘制框架。
所以将ECLoginPanel
的代码替换为:
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);
//Added the following 3 lines...
frame.add(LoginPanel);
frame.revalidate();
frame.repaint();
}
}
...让我们知道它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.