繁体   English   中英

从另一个JPanel调用JPanel

[英]Calling JPanel from another JPanel

我知道这是不明智的,但我使用绝对布局,并尝试从一个面板到另一个面板,并很好奇如何做到这一点。

public class Mainscreen extends JFrame {

 private JPanel Home;

 /**
 * Launch the application.
 */ 
 public static void main(String[] args) {
 EventQueue.invokeLater(new Runnable() {
 public void run() {
 try {
     Mainscreen frame = new Mainscreen();
 frame.setVisible(true);
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 });
 }


 public Mainscreen() {
 final Dataentrylog DEL = new Dataentrylog();

 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setResizable(false);
 setBounds(100, 100, 618, 373);
 Home = new JPanel();
 Home.setBackground(new Color(255, 250, 250));
 Home.setBorder(new LineBorder(Color.DARK_GRAY, 1, true));
 setContentPane(Home);
 Home.setLayout(null);

     JButton btnNewButton = new JButton("Data Entry login");
      btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 14));
      btnNewButton.setForeground(new Color(0, 0, 0));
      btnNewButton.setBackground(UIManager.getColor("Menu.selectionBackground"));

      btnNewButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {

        Home.setVisible(false);
        setContentPane(DEL);
        setLayout(null);     



      }
      });
      btnNewButton.setBounds(44, 214, 204, 61);
      Home.add(btnNewButton);


 }



} 

调用这个有效的JPanel

import java.awt.EventQueue;

public class Dataentrylog extends JPanel {

public Dataentrylog() {
 setBounds(100, 100, 618, 373);
 setBackground(new Color(255, 250, 250));
 setBorder(new LineBorder(Color.DARK_GRAY, 1, true));
 setLayout(null);

 DEadmin DEA = new Deadmin();

    final JButton btnSignIn = new JButton("Sign in");
    btnSignIn.setFont(new Font("Tahoma", Font.PLAIN, 14));
    btnSignIn.setBackground(UIManager.getColor("EditorPane.selectionBackground"));
    btnSignIn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {


    }


    });
    btnSignIn.setBounds(226, 282, 153, 52);
    add(btnSignIn);
 }


} 

虽然这可行,如果我尝试从Dataentry日志调用另一个JPanel,JFrame是空白的。 如何调用另一个JPanel? 任何帮助都会很棒。 此外,我知道布局管理员是常态,但对于我必须做的事情,我无法找到任何有用的东西,所以尽管我有最好的判断,我仍然选择使用null。 谢谢!

Dataentrylog的初始化应该是这样的

final Dataentrylog DEL = new Dataentrylog(this);

我们必须传递父jframe。

public class Dataentrylog extends JPanel {


    public Dataentrylog(final JFrame parent ) {
        setBounds(100, 100, 618, 373);
        setBackground(new Color(255, 250, 250));
        setBorder(new LineBorder(Color.DARK_GRAY, 1, true));
        final JButton btnSignIn = new JButton("Sign in");
        btnSignIn.setFont(new Font("Tahoma", Font.PLAIN, 14));
        btnSignIn.setBackground(UIManager.getColor("EditorPane.selectionBackground"));
        btnSignIn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                JPanel panel = new JPanel();
                panel.add(new JButton("Solved"));
                parent.setContentPane(panel);
            }
        });
        btnSignIn.setBounds(226, 282, 153, 52);
        add(btnSignIn);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM