Java JApplet-尝试切换在外部类中创建的JPanels

如何解决Java JApplet-尝试切换在外部类中创建的JPanels

|| 我有一个扩展jApplet的类和三个扩展jpanel的类。现在,我试图将这些jPanels切换为使用特定Jpanel从JButton执行的操作。 问题:我可以在int()方法中从applet本身设置为可见的applet中加载/显示第一个面板。但是,当我尝试从按钮上单击jPanel表单执行相同操作时,它将不起作用。我面板关闭,但添加的新面板不显示。 以下代码的代码上下文: 应用。 java是applet类 用户登录。 java是jpanel类(1) Reset_Password.java是jpanel类(2) 在User_Login jpanel上单击Change Password按钮时,我要调用Reset_Password jpanel。 代码如下。任何帮助都受到高度赞赏 应用程序
package business_intelligence;

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


/**
 *
 * @author lokesh
 */
public class Application extends JApplet {

int x = 0;

Container content_pane = getContentPane();

User_Login obj = new User_Login();
Reset_Password obj1 = new Reset_Password();



public void init() {

    setVisible(true);
    setSize(1200,1000);
   content_pane.add(obj);
   content_pane.add(obj1);
   content_pane.add(obj2);
   add(obj1);
   add(obj2);
   add(obj);
   obj.setVisible(true);
   obj1.setVisible(false);
   obj2.setVisible(false);
}

public void Change()
{
    content_pane.removeAll();
    content_pane.add(obj1);
    add(obj1);
    obj1.setVisible(true);
}
public void Login()
{
    content_pane.removeAll();
    content_pane.add(obj);
    add(obj);
    obj.setVisible(true);
}
}
User_Login.java
package business_intelligence;
import javax.swing.*;
import java.awt.*;
import javax.swing.JApplet.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
/**
 *
 * @author lokesh
 */
public class User_Login extends JPanel implements ActionListener {
FlowLayout f;
JLabel l1;
JLabel l2,l3,h1 ;
JButton b1;
JButton b2,b3,b4;
Font fo1 = new Font(\"Verdana\",Font.BOLD,25);
Font fo2 = new Font(\"Verdana\",Font.PLAIN,15);
JTextField tf1 = new JTextField();
JPasswordField tp1 = new JPasswordField();
Color bg = new Color (255,255,204);

public User_Login()
{

    setVisible(true);
    setSize(1200,1000);
    setBackground(bg);
    setLayout(null);
    h1 = new JLabel(\"Welcome to Business Intelligence Application -- Login\");
 h1.setFont(fo1);
 h1.setBounds(100,02,800,50);
 l1 = new JLabel(\"User-name\");
 l1.setFont(fo2);
 l2 = new JLabel(\"Password\");
 l2.setFont(fo2);
 l3 = new JLabel();
 l3.setFont(fo2);
 l3.setForeground(Color.RED);
 b1 = new JButton(\"Submit\");
 b2 = new JButton(\"Close\");
 b3 = new JButton(\"Reset Password\");
 b4 = new JButton(\"New User Request\");
 add(h1);
 l1.setBounds(100,100,40);
 add(l1);
 l2.setBounds(100,150,40);
 add (l2);
 add(b1);
 add(b2);
 tf1.setBounds(300,200,40);
 add(tf1);
 tp1.setBounds(300,40);
 add(tp1);
 b1.setBounds(25,260,50);
 add(b1);
 b2.setBounds(200,50);
 add(b2);
 l3.setBounds(100,400,50);
 add(l3);
 b3.setBounds(375,50);
 add(b3);
 b4.setBounds(550,160,50);
 add(b4);
 b1.addActionListener(this);
 b2.addActionListener(this);
 b3.addActionListener(this);
 b4.addActionListener(this);

}

public void verifyLogin()
{

    String uid = tf1.getText();
    char ch[] = tp1.getPassword();
    String pwd = String.valueOf(ch);

    Connect obj1 = new Connect();
    obj1.connect();
    int r = obj1.verifyLogin(uid,pwd);
    if (r ==1)
    {
        setVisible(false);
        Application obj = new Application();
        obj.Dashboard();

    }
    else
    {
        l3.setText(\"Incorrect User-name or Password. Try again.\");
    }
}

public void actionPerformed(java.awt.event.ActionEvent evt)
{
    Object ob = evt.getSource();
    if(ob == b1)
        verifyLogin();
    else if (ob == b2)
            System.exit(0);   
    else if (ob == b3)
    {   
        setVisible(false);
        Application obj = new Application();
        obj.Change();  
    }

}

}
Reset_Password.java
package business_intelligence;

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

//mport java.awt.event.*;
/**
 *
 * @author lokesh
 */
public class Reset_Password extends JPanel implements ActionListener {

String email;
String pwd;
String cpwd;
JLabel l1,l2,l4,h1 ;
JButton b1;
JButton b2;
Font fo3 = new Font(\"Verdana\",25);
Font fo4 = new Font(\"Verdana\",15);
JTextField tf1 = new JTextField();
JPasswordField p1 = new JPasswordField();
JPasswordField p2 = new JPasswordField();
int r;

Color bg = new Color (255,204);



public Reset_Password()
{
    setSize(1200,1000);
    setBackground(bg);
    setLayout(null);
    h1 = new JLabel(\"Welcome to Business Intelligence Application -- Change Password\");
    h1.setFont(fo3);
    h1.setBounds(100,1000,50);
    add(h1);
    l1 = new JLabel(\"E-mail\");
    l1.setFont(fo4);
    l2 = new JLabel(\"New Password\");
    l2.setFont(fo4);
    l3 = new JLabel(\"Confirm Password\");
    l3.setFont(fo4);
    l4 = new JLabel(\"\");
    l4.setFont(fo4);
    l4.setForeground(Color.RED);
    b1 = new JButton(\"Submit\");
    b2 = new JButton(\"Cancel\");
    l1.setBounds(100,40);
    add(l1);
    l2.setBounds(100,40);
    add (l2);
    add(b1);
    add(b2);
    tf1.setBounds(300,40);
    add(tf1);
    p1.setBounds(300,40);
    add(p1);
    p2.setBounds(300,40);
    add(p2);
    l3.setBounds(100,50);
    add(l3);
    l4.setBounds(100,250,50);
    add(l4);
    b1.setBounds(100,300,50);
    add(b1);
    b2.setBounds(350,50);
    add(b2);
    b1.addActionListener(this);
    b2.addActionListener(this);
}


@Override
public void actionPerformed (java.awt.event.ActionEvent e)       
{                                         

    Object ob = e.getSource();
    if(ob == b1)    
        resetPassword();
    if (ob == b2)
    { 

           Application obj = new Application ();
           obj.Login();
    }

}

    // TODO add your handling code here                                        

/*private void ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    //setVisible(false);

    if (isVisible()== true)
        setVisible(false);

    this.remove(this);
    Business_Intelligence obj = new Business_Intelligence();
    obj.activated();

} */     



public void resetPassword()
{

    email = tf1.getText();
    char ch[] = p1.getPassword();
    pwd = String.valueOf(ch);
    char ch1[] = p2.getPassword();
    cpwd = String.valueOf(ch1);
    if (ch.length >= 8)
    {

        if(pwd.equals(cpwd))
        {
        Connect obj = new Connect();
        obj.connect();
        int r = obj.verifyEmail(email);
        if (r==1)
            {
                obj.connect();
                obj.updat(email,pwd);
                l4.setVisible(true);
                l4.setText(\"password changed\");              
                p1.setText(null);
                p2.setText(null);
                tf1.setText(null);

            }
        if (r==0)
            {
                l4.setVisible(true);
                l4.setText(\"incorrect e-mail id\");
            }
        }
        if(!pwd.equals(cpwd))
        {
        //jLabel5.setForeground(Color.RED);
        l4.setVisible(true);
        l4.setText(\"password and confirm password did not match\");     
        } 
    }
    if (ch.length < 8)
    {
     //jLabel5.setForeground(Color.RED);   
     l4.setVisible(true);
     l4.setText(\"password should be a minimum of 8 characters\");
    }
}
}
    

解决方法

        与其直接在小程序ContentPane中放置内容,不如在该ContentPane中放置“ 3”,然后更改该CardLayout的可见面板,这是一个简单得多的操作。 编辑一个例子 好的,让我们考虑您要在ContentPane中放置CardLayout,然后将所有其他面板添加到其中。 为此,您只需更改init方法如下:
public void init() {

    setVisible(true);
    setSize(1200,1000);

    // Shamelessely borrowed from http://download.oracle.com/javase/tutorial/uiswing/layout/card.html
    // which you SHOULD definitevely read
    content_pane.setLayout(new CardLayout());

    // First item will stay visible,as long as it is not changed
    content_pane.add(obj,\"user_login\");
    content_pane.add(obj1,\"user_panel\");
    content_pane.add(obj2,\"reset_login\");

}
然后,当用户登录时,您必须更改活动面板,就这样更改Change方法。
public void Login()
{
    CardLayout card = (CardLayout) content_pane.getLayout();
    card.show(content_pane,\"user_panel\");
}
    ,        
japplet.setSize ( panel.getWidth (),panel.getHeight () );
japplet.setContentPane ( panel );
panel.revalidate ();
panel.repaint ();
japplet.revalidate ();
japplet.repaint ();
revalidate () must be called first prior repaint ();
source : http://stackoverflow.com/questions/10119069/repaint-jpanel-doesnt-work-in-japplet
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-