【问题标题】:How to define jpanels to their own class switching between them?jpanels如何定义自己的类在它们之间切换?
【发布时间】:2016-03-04 21:49:27
【问题描述】:

目前正在制作一个访问 sql 数据库的程序,其中数据在 Jtable 上查看,侧面带有文本字段和按钮,以更改从数据库中添加和删除数据(这一切正常)。 我困扰的是,我已经开始制作我的其他 jpanels,(目前所有这些都使用一个类)并且我发现代码行数越来越大..

我想问一下,是否可以在它们自己的单独类中定义每个 jpanels 内容和按钮,以及我将如何去做。 有了这个,我将如何在每个 jpanel 之间切换?

目前正在使用具有不同 japanels 的卡片布局。这是我的 UI 的外观(不是主 jpanel)。

GUI 顶部的 5 个按钮应该在 jpanel 之间导航,其余的按钮、文本字段和 jtables 会根据导航到的 jpanel 而有所不同。

主类中的一些代码,里面有我的jpanels:

    JPanel main_panel = new JPanel();
    contentPane.add(main_panel, "name_21784032966449");
    main_panel.setLayout(null);

    JButton btnHome = new JButton("Home");
    btnHome.setBounds(10, 11, 97, 38);
    main_panel.add(btnHome);

    JButton btnHandOver = new JButton("Hand Over");
    btnHandOver.setBounds(117, 11, 97, 38);
    main_panel.add(btnHandOver);

    JButton btnMachineLogs = new JButton("Machine Logs");
    btnMachineLogs.setBounds(224, 11, 97, 38);
    main_panel.add(btnMachineLogs);

    JButton btnParts = new JButton("Parts");
    btnParts.setBounds(10, 60, 97, 38);
    main_panel.add(btnParts);

    JButton btnRunup = new JButton("Run Up");
    btnRunup.setBounds(117, 60, 97, 38);
    main_panel.add(btnRunup);

    JPanel parts_panel = new JPanel();
    contentPane.add(parts_panel, "name_22617526869296");
    parts_panel.setLayout(null);

我不知道如何将每个 jpanel 定义为它们自己的类,更不知道如何在面板之间切换。

【问题讨论】:

  • 就像,我有一个类似的东西,我有一个高级搜索,每个“面板”是一个字段名称下拉组合框,一个比较下拉列表(大于、小于等)和一个框以输入您的搜索条件。您只需单击一个加号按钮,它就会添加另一个面板。这是你想做的吗?
  • 我正在寻找一种方法来在他们自己的 jpanels 中定义 jpanels 的内容,所以我没有一个充斥着方法、按钮和 sql 连接的主类,目前我只有一个类最终将得到大约 5 个 jpanels 的代码,我宁愿将它们放在不同的类中
  • 请编辑您的图片链接,使其链接到实际图片,而不是包含图片的网页。也请出示相关代码。
  • 至于你的问题:"I would like to ask, is it possible define each jpanels content and buttons in their own separate class..."——答案是不合格的"...how I would go about doing so."——这都取决于您当前程序整体结构和代码的详细信息。
  • 好吧,我们现在有了图像,我已经添加了它,并且我们有一些代码,但似乎没有一个可以帮助澄清您的问题,至少对我来说没有。如果我是你,我会继续尝试为我的 JPanel 创建类,看看我是否可以自己做,如果它不起作用,问一个更具体的问题,显示与你的问题实际相关的代码(您当前的代码没有)。您当前的所有代码都向我们展示了您正在使用 null 布局和 setBounds(...) 这将其标记为新手 Swing 代码,并且可以通过使用布局来改进此代码。

标签: java eclipse jpanel windowbuilder


【解决方案1】:

感谢满载鳗鱼的气垫船,附上一个问答的链接:

CardLayout changing panel from another class

【讨论】: