Tag: cardlayout

如何在Java的CardLayout中获得顶级卡片

是否可以在Java的CardLayout中获得顶级卡? 我已经尝试循环遍历每个组件以检查isVisible()的可见性,但似乎它们都是“可见的”。 编辑:通过“顶级卡”我的意思是当前处于“顶部”的那个,正在显示,而不是第一张或最后一张牌。 另外,我不知道它是否有帮助,但我正在寻找一个JPanel(或其子类) 编辑:代码段 for (Component component : getComponents()) { if (component instanceof JPanel && component.isVisible()) { currentPanel = (JPanel) component; System.out.println(currentPanel.getClass().getName()); } } 上面的代码总是打印出每个组件类的名称,无论它们是否是可见卡。 编辑 :我将此作为学校作业的一部分。 我不是想在这里获得免费赠品,作业并不围绕这种布局。 它似乎是在面板之间切换最方便的布局。 我的老师已经指定项目中没有第三方代码。 我之前看过camickr链接的实现,但我不能使用它。 我可以松散地实现它的类似function,也许在文档中提供它,但我不能简单地下载和使用它。 编辑 :我试图获得顶级卡的原因是因为我有一个带有“添加”按钮的工具栏。 我没有为我的两个可能的东西添加一个按钮,而是希望通过查看当前正在查看的面板来知道要添加哪个按钮。 如果还有其他更合适的方法,请告诉我。 编辑 :谢谢大家的帮助。 我弄清楚问题是什么。 我想这是我的错,因为我没有提供足够的细节。 我的两张牌是JScrollPane ,我还需要查看其中的内容,看看其中一个面板是否是我看到的那个。 我没有检查滚动窗格本身上的isVisible() ,我一直在查看它始终可见的争议,滚动窗格是我需要validation的可见性。 public JPanel getCurrentPanel() { JPanel currentPanel = null; for (Component […]

CardLayout与手动添加/删除JPanels有什么特别之处?

在StackOverflow上有很多次用户问这样的问题…… 我有一个主要的JPanel ,包含一个孩子JPanel 。 当用户单击按钮时,子JPanel应更改为其他JPanel 。 我怎样才能做到这一点。 通常,用户实际上已尝试实现此问题,但无法使其正常工作。 每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)…… JPanel myFrame = new JPanel(); myFrame.remove(oldPanel); myFrame.add(newPanel); 我认为这是一个非常合理的答案,我个人在我自己的许多Java项目中都没有使用过这个问题。 但是,我总是得到我的回答,每个人都只是说“使用CardLayout ”。 所以我的问题是,为什么每个人都对CardLayout如此着迷,以至于我的答案值得投票? 我为什么要选择使用CardLayout而不是使用上面的代码添加/删除面板? 作为进一步的问题,您是否仍然建议使用具有动态JPanel的接口的CardLayout 。 例如,我的大多数程序都实现了一个自定义插件框架,其中可能有数百个JPanels ,但我只是加载并显示实际需要的面板。 对于程序的正常使用,大多数面板实际上永远不会被加载或需要。 对于这种类型的场景,我的编码方法是否是最好的解决方案,因为据我所知, CardLayout要求我实际创建所有的JPanels即使大多数都不会被使用?

如何从另一个面板更改卡布局面板?

我用Google搜索了很多,没有找到解决方案。 我想应该有java大师来帮助我… 这是我的初始化方法: private void initialize() { this.setSize(750, 480); this.setContentPane(getJContentPane()); this.setTitle(“Registration”); JPanel topPane = new TopPane(); this.getContentPane().add(topPane,BorderLayout.PAGE_START); cards=new JPanel(new CardLayout()); cards.add(step0(),”step0″); cards.add(step1(),”step1″); cards.add(step2(),”step2″); this.getContentPane().add(cards,BorderLayout.CENTER); } public JPanel step2(){ EnumMap template = new EnumMap(DPFPFingerIndex.class); JPanel enrol = new Enrollment(template,2); return enrol; } public JPanel step0(){ JPanel userAgree = new UserAgreement(); return userAgree; } public JPanel step1(){ […]

Java CardLayout主菜单问题

好的,所以即时通讯工作在java中称为8位嵌合体。 我现在在主菜单上工作但是当我使用卡片布局时,窗口由于某种原因不会打开。 这是一些代码。 import javax.swing.*; import java.awt.*; public class MainScreen extends JFrame{ String Title = “MainMenu”; MainMenuComp MMC = new MainMenuComp(); BreedingGround BGR = new BreedingGround(); public MainScreen() { setTitle(“8-bit Chimera “+Title); setSize(800,600); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); add(MMC); add(BGR); } public static void main(String[] args){ new MainScreen(); } } 那是主窗口 import javax.swing.*; import java.awt.*; import java.awt.event.*; […]

在父JPanel中显示添加的JPanel

如何在父JPanel看到添加的JPanel ? 我正在使用Netbeans来设计我的UI。 我有一个MainFrame.java ,它包含两个面板; 即headerPanel和bodyPanel 。 在headerPanel我放了三个按钮,让它为button1 , button2和button3 。 我还创建了三个扩展JPanel独立文件,命名为panel1 , panel2和panel3 。 然后我在构造函数的MainFrame.java中添加了bodypanel内的所有三个面板。 bodyPanel.add(panel1); bodyPanel.add(panel2); bodyPanel.add(panel3); 我希望单击相应的按钮时,只有相应的面板应出现在主机的bodypanel中,即如果我单击button1则应显示panel1 。 我已经在button1鼠标监听器方法中尝试了以下代码: bodyPanel.validate(); bodyPanel.getComponent(0).setVisible(true); 但是panel1没有出现。 我这样做是因为面板中添加的组件被分配了索引。 所以首先我尝试获取组件然后使其可见。 它不起作用。

如何从另一个单独的类更改java Cardlayout

请问我一直在尝试从另一个类(JPanel)切换CardLayout,这是CardLayout上的卡之一,我已经搜索并对此进行了很长时间的研究,但没有发现任何有用的信息。 我有一个CardLayout和两个单独的JPanels,我添加到CardLayout,现在我希望能够在单独的JPanel或单独的类上执行活动后切换卡,那么如何从另一个类切换CardLayout? 我的代码如下。 package myApp; import java.awt.CardLayout; public class TestmyCard extends javax.swing.JFrame { /** * Creates new form TestmyCard */ public TestmyCard() { initComponents(); jPanel1.add(new FirstCard(),”card3″); jPanel1.add(new SecondCard(),”card4″); } public void chgCard(String nwCard){ CardLayout cl = (CardLayout)(jPanel1.getLayout()); cl.show(jPanel1,nwCard); } /** * This method is called from within the constructor to initialize the form. * WARNING: […]

如何在java中有效地使用cardlayout,以便使用各种面板构造函数内的按钮从面板切换

我是新手使用cardlayout,我有一些关于如何实现它的问题。 我首先想知道实现cardlayout的最佳方法,以便我可以从面板切换到面板。 我的主要问题是如何使用面板构造器内的按钮从面板切换到面板。 我今天刚刚开始研究这个项目,所以你会看到一些未完成或没有意义的代码。 我首先尝试使我的所有类扩展JFrame,但这导致了多个不需要的窗口。 如果我能得到一些关于如何有效使用cardlayout以及如何使用我的其他面板构造器中的按钮切换面板的示例。 我尝试使用cardlayout只适用于我在gui类中创建的按钮,但这不是我想要的结果。 如果可以,请提供帮助,并提前致谢。 这是我的主要课程。 public class controller{ public static void main(String[] args){ new Gui(); } } 这是我的gui课。 import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class Gui extends JFrame{ homePage home = new homePage(); public JPanel loginPanel […]