栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

这个JPanel代码好吗?单击按钮时不显示其他JPanel

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

这个JPanel代码好吗?单击按钮时不显示其他JPanel

这个JPanel代码好吗?

并非如此(很抱歉),您应该使用a

CardLayout
来使其正常工作,请参阅如何使用CardLayout。

通过在构造函数中重新声明变量(

panel
panel_1
),您还可以隐藏变量。

您还应该避免使用

null
布局,像素完美布局是现代ui设计中的一种幻觉。有太多因素会影响组件的单个大小,您无法控制。Swing旨在与布局经理为核心一起工作,舍弃这些问题不会导致问题和问题的终结,您将花费越来越多的时间来尝试纠正问题

您也永远不会添加

panel_1
contentPane
因此对其进行调用
setVisible
(假设变量阴影已修复)将不会执行任何操作

通常也建议不要直接从

Jframe
其他顶级容器扩展它,也不要在该类中添加任何新功能,而只能将自己锁定在一个用例中

因此,您可能会做更多类似的事情…

import java.awt.CardLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.Jframe;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;import javax.swing.border.EmptyBorder;public class Test {    public static void main(String[] args) {        new Test();    }    public Test() {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     try {         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());     } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {         ex.printStackTrace();     }     Jframe frame = new Jframe("Testing");     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     frame.add(new Govinda());     frame.pack();     frame.setLocationRelativeTo(null);     frame.setVisible(true); }        });    }    public class Govinda extends JPanel {                private static final long serialVersionUID = 1L;        private JPanel panel;        private JPanel panel_1;                public Govinda() { setBorder(new EmptyBorder(5, 5, 5, 5)); setLayout(new CardLayout(0, 0)); JPanel panel = new JPanel(); add(panel, "name_273212774632866"); JButton btnNewButton = new JButton("New button"); btnNewButton.addActionListener(new ActionListener() {     public void actionPerformed(ActionEvent e) {         ((CardLayout) getLayout()).show(Govinda.this, "name_273214471684839");     } }); panel.add(btnNewButton); JPanel panel_1 = new JPanel(); add(panel_1, "name_273214471684839"); JLabel lblHaiiiiiiiii = new JLabel("HAIIIIIIIII"); panel_1.add(lblHaiiiiiiiii);        }    }}

您可能还会考虑对导航使用更多的“ 模型-视图-
控制器”
方法,因此用于确定下一个视图的逻辑将由控制器根据模型的要求进行,例如,看看在监听器放置秉承传统(非中介)MVC模式



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号