返回之前的 JPanel

2023-11-29

我继承了代码,并且由于需要长时间解释的原因,我需要使用空布局。我一直在尝试利用他们在 JPanels 之间导航的内容。我一直不知道怎么做。这就是我现在所拥有的,它被编译成下面的 SSCCE。我试图做的是将 JPanel 添加到 ArrayList,其中包含对先前 JPanel 的引用。这样我就可以从用户所在的当前 JPanel 调用“主”JPanel。到目前为止,它会转到之前的 JPanel,但内容是空的。任何帮助都会很棒,谢谢!

import java.util.ArrayList;

import javax.swing.*;
import javax.swing.border.LineBorder;

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Mainscreen extends JFrame {

     public JPanel Home;


     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() {
        ArrayList <JPanel> jpLayout = new ArrayList();
    final Dataentrylog DEL = new Dataentrylog(this, jpLayout);  

        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));
        Home.setVisible(true);
        setContentPane(Home);

            Home.setLayout(null);     

              JButton delLog = new JButton("Next JPanel");
              delLog.setFont(new Font("Tahoma", Font.PLAIN, 14));
              delLog.setForeground(new Color(0, 0, 0));
              delLog.setBackground(UIManager.getColor("Menu.selectionBackground"));
              Home.add(delLog);

              jpLayout.add(Home);
              delLog.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent arg0) {

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

              }
              });
              delLog.setBounds(44, 214, 213, 61);      

     }


    } 

import java.util.ArrayList;

import javax.swing.*;
import javax.swing.border.LineBorder;

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Dataentrylog extends JPanel {


 public Dataentrylog(final JFrame parent, final ArrayList <JPanel> jpLayout) {
    setBounds(100, 100, 618, 373);
    setBackground(new Color(255, 250, 250));
    setBorder(new LineBorder(Color.DARK_GRAY, 1, true));
    setLayout(null);



    final JButton btnSignIn = new JButton("Go Back");
    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);
            parent.setContentPane(jpLayout.get(0));
            setLayout(null);

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

 }
} 

我需要使用空布局。

如果某些导师要求您使用以下命令在面板之间执行导航null layout,这是您需要执行的操作:

  • First,离开导师。
  • Second,使用卡片布局。

查看教程:如何使用卡片布局

工作示例:

这是一个书面的CardLayoutDemo其间导航10 panels包括使用按钮单击操作的主页面板:

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

class CardLayoutDemo1 extends JFrame {

    private JPanel jPanel1;
    private JButton navHomeButt;
    private JButton navNextButt;
    private JButton navPreviousButt;
    private JPanel panelContainer;

    public CardLayoutDemo1() {
        initComponents();


        panelContainer.add(createSamplePanel("Home Panel "), ""+0);
        for(int i=1; i < 10; i++)
        {
           panelContainer.add(createSamplePanel("Panel "+i), ""+i);
        }
    }

    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        navPreviousButt = new JButton();
        navNextButt = new JButton();
        navHomeButt = new JButton();
        panelContainer = new JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));

        navPreviousButt.setText("Previous");
        navPreviousButt.setPreferredSize(new Dimension(90, 23));
        jPanel1.add(navPreviousButt);

        navNextButt.setText("next");
        navNextButt.setPreferredSize(new Dimension(90, 23));
        jPanel1.add(navNextButt);

        navHomeButt.setText("Back to Home");
        jPanel1.add(navHomeButt);



        panelContainer.setPreferredSize(new Dimension(400, 300));
        panelContainer.setLayout(new CardLayout()); 
        // setting the card layout

        getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);
        getContentPane().add(panelContainer, BorderLayout.CENTER);




        navNextButt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                CardLayout cardLayout = (CardLayout) panelContainer.getLayout();
                cardLayout.next(panelContainer);
                // using cardLayout next() to go  to next panel
            }
        });
        navHomeButt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               CardLayout cardLayout = (CardLayout) panelContainer.getLayout();
               cardLayout.first(panelContainer);
               // suing first to get to the home panel
            }
        });
        navPreviousButt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               CardLayout cardLayout = (CardLayout) panelContainer.getLayout();
               cardLayout.previous(panelContainer);

               // using previous to get to previous(left)panel
            }
        });

        pack();
    }                   

    public JPanel createSamplePanel(String panelTitle)
    {
        JPanel samplePanel = new JPanel();
        samplePanel.add(new JLabel(panelTitle));

        return samplePanel;

    }                                           


    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CardLayoutDemo1().setVisible(true);
            }
        });
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回之前的 JPanel 的相关文章

随机推荐

  • 如何从左向右移动/滑动图像

    我想从左向右滑动或移动图像 例如 http rajeevkumarsingh wix com pramtechnology 读取移动的五边形框 Ok 我尝试了一下但没能做到 我使用的代码如下
  • 使用 RVM 安装后,Ruby 1.9.2 不断恢复到 1.8.7

    我安装了 Ruby 1 9 2 我用了rvm use 1 9 2然后当我输入时ruby v它说1 9 2 然后 当我退出终端并重新打开它时 它再次显示 1 8 7 我究竟做错了什么 您的默认 ruby 很可能未设置为 ruby 1 9 2
  • 如何进行货物保存分析?

    我怎样才能把货物运到save analysis 我知道我可以这样做rustc通过致电 rustc Zsave snalysis
  • Matlab,如何调整图形上的轴值(科学记数法-精度不够)[重复]

    这个问题在这里已经有答案了 可能的重复 抑制数字刻度中的指数格式 对于我的图中的每个刻度线 Matlab 将我的轴标记输出为 5 777 x10 6 是否有可能让 matlab 输出实际的十进制数字而不是科学记数法 以便刻度线实际上是不同的
  • 读取文本文件并显示在表 vbscript 中

    我有一个具有以下结构的文本文件 C Users abc Desktop New Folder sample txt AccountName gt AbcPos AccountName gt dblLayer queryAccount gt
  • 在更新插入时跳过空值

    我正在使用 pg promise 来处理我的 Postgres 查询 但在找到以下查询的解决方案时遇到了麻烦 我正在尝试创建一种方法来一次批量插入多行 这是我的代码 massUpsert orgId entities gt db tx t
  • 如何在不重新启动的情况下关闭DEP(数据执行保护)?

    我正在编写一个测试网页 它调用 DLL 文件中的函数 但是每次我使用IE或FF打开它之前我必须禁用DEP 数据执行保护 否则脚本无法执行 当前禁用 DEP 的方法需要重新启动 但我不想重新启动 基本上 我正在寻找一种无需重新启动即可关闭 D
  • Google Cardboard Unity 5 没有立体视觉

    我的 Cardboard 应用程序在设备上没有立体效果 但它在编辑器中有效 这就是它在编辑器中的样子 https i stack imgur com sN14x png 这是它在设备上的样子https i stack imgur com 7
  • Pod 在 Kubernetes 中启动但不工作

    创建了具有 3 个 Pod 的 Kubernetes 集群部署 并且全部运行良好 但是当尝试运行它们时无法做到这一点 尝试在描述部分中执行卷曲 Pod 的 Ip 内部 我可以看到此错误 MountVolume SetUp failed fo
  • 自动执行eclipse插件

    我尝试创建一个 Eclipse 插件 当 Eclipse 工作台关闭时 它会删除一些文件 我从Hello World command插件项目并添加了IWorkbenchListener就像本主题中提到的Eclipse 关闭钩子能够停止终止
  • django 对 MongoDB 的内置支持

    我正在尝试查找官方 django 是否支持任何 noSQL DBMS 尤其是 MongoDB 的信息 我找到了一个Django 1 3 的分支 the Django nonrel 官方 django 的一个分支 和其他一些不太可靠的项目 根
  • 填充xaml矩形倍数solidcolorbrush

    xaml中这种类型的填充矩形可以吗 我不想使用渐变来填充矩形 因为每个部分的图像使用不同的纯色画笔 Thanks 尝试这个
  • std::string 构造函数中的内存分配/堆损坏

    我在内存分配方面再次遇到了一些麻烦 但我不明白为什么 当我在调试模式下运行程序时 我收到以下错误消息 我尝试尽可能准确地翻译它 Windows 已触发 LogoColorDetector exe 中的断点 这可能是由堆损坏引起的 这表明 L
  • 代理验证失败错误

    我正在尝试通过 FTP 站点代理访问 FTP 服务器以绕过防火墙it sauronsoftware ftp4j FTPClient我知道我的用户名 密码是正确的 因为我可以使用 FileZilla 进行连接 我尝试使用Authenticat
  • 如何编写多线程函数来同时处理不同的任务?

    我想定义一个do in parallelpython 中的函数将接受带参数的函数 为每个函数创建一个线程并并行执行它们 该函数应该像这样工作 do in parallel sleep 3 sleep 8 sleep 3 然而我很难定义do
  • WPF 数字 UpDown 控件在哪里?

    进入第一个严肃的 WPF 项目 似乎有很多基本的控件都缺失了 具体来说 我正在寻找 Numeric UpDown 控件 我是否错过了乐队外的发行 真的不想写自己的控件 我不想使用 WindowsFormHost 并在其上放置 WinForm
  • “mvn clean install”与“mvn install”有何不同?

    有什么区别mvn clean install and mvn install clean是 Maven 中自己的构建生命周期阶段 可以将其视为操作或任务 mvn clean install告诉 Maven 做clean运行之前每个模块中的阶
  • 如何使用 JsonFormat 将 Jackson Json NULL 字符串反序列化为日期

    我已经看了很多 但到目前为止仍然无法得到答案 非常感谢任何帮助 我有一个简单的String to Date字段映射并尝试将 JSON 字符串读取到 Java 对象 JsonInclude value Include NON EMPTY Js
  • 谷歌电子表格“查询”功能可以在谷歌应用程序脚本中使用吗?

    我正在寻找一种以编程方式填充电子表格的方法 该电子表格根据登录用户过滤另一个电子表格中的数据 我可以使用电子表格中的查询功能来完成此操作 但是 无法找到从应用程序脚本调用查询函数的方法 这可以做到吗 将不胜感激示例代码 谢谢 不知道有没有限
  • 返回之前的 JPanel

    我继承了代码 并且由于需要长时间解释的原因 我需要使用空布局 我一直在尝试利用他们在 JPanels 之间导航的内容 我一直不知道怎么做 这就是我现在所拥有的 它被编译成下面的 SSCCE 我试图做的是将 JPanel 添加到 ArrayL