例如,我有一个日历。是否可以重复使用包含日期编号“1”的JLabel到我日历中的所有月份?还是必须另外制作另一个JLabel?我做了一整年的日历,但我的代码有7k行代码...我可以在我的程序的不同部分重用JLabel组件吗?
回答
答案是:是的,你可能重用一个GUI组件,但是之前的组件将不可用,因为JLabel一次只能显示在一个容器上,它是最近添加的容器。
但你为什么要?如果您的JLabel正在显示它,请重新使用ImageIcon。否则,你只是显示文本。你的问题表明你的程序设计可能关闭,你可能想重新考虑你的程序的结构。最重要的是,不要将您的程序模型与其视图混淆。
你最近的评论:”
想如果我不使用的ImageIcon这可能吗?并只使用纯JLabel文本?我正在使用Netbeans GUI创建器。
再次为什么要?它只是保存文本。我建议你不要这样做,我担心你的程序设计不好。也许你真正想使用的是一个JTable。
嗨!感谢您的快速回复!我的JLabel日期在JPanel(月面板)内,所有面板都在JFrame内。当我点击JButton时,它隐藏当前面板并显示下一个面板。每个面板(12个月面板)都有许多JLabel。我应该每年制作一个JFrame以避免滞后?
应该没有滞后。您将需要使用CardLayout来交换JPanel。
您可能想要做的是为一般月份对象创建一个类,然后为每个特定月份创建此对象的实例。再次,想想重新设计。此外,学习编写没有生成的代码,因为这会增强你对你正在使用的库的理解。
编辑更多推荐:
首先创建一个非GUI模型类,月份:
- 给它一个字符串字段的月份名称
- 给它一个天这个星期的一周中的某一天(可能是一个枚举)
- 给它一个int字段的天数e周。
- 您可能想给它DayEvent对象的ArrayList,以保存可能的事件放在日历上,如生日,节假日等,以及setter和getter方法。
那么对于你的GUI部分,创建一个GUI类来表示一个月,说叫MonthView
- 通过手没有的NetBeans生成的代码来创建它
- 给它一个月因此它可以保存并使用它的模型,这是上述Month类的一个实例。
- 给它一个BorderLayout
- 给它一个标题JLabel显示月份名称,并添加此BorderLayout.NORTH。
- 给它一个使用GridLayout(0,7)的JPanel - 用于7列和可变数量的行。添加此BorderLayout.CENTER
- 用JLabels填充此GridLayout。
- 有可用的逻辑将您的日期字符串放入正确的JLabel网格单元格中。
现在您的日期将由最多35个JLabel的代码表示。当然,你的日期将会有365 JLabels,但只需要代码 35(7 * 5)JLabels允许你创建所有的JLabel。
如果您要将它与先前的JLabel同时绘制,您应该创建一个新的JLabel。
为了获得高质量的答案,您应该提供一个清晰,简单,独立的代码示例来演示您的问题。
嗨!感谢您的快速回复!我的JLabel日期在JPanel(月面板)内,所有面板都在JFrame内。当我点击JButton时,它隐藏当前面板并显示下一个面板。每个面板(12个月面板)都有许多JLabel。我应该每年制作一个JFrame以避免滞后? – Storio
您可能不应该创建新的JFrame,因为这是容纳组件的顶级容器。您可以为每个日历月份创建一个单独的JPanel,然后延迟加载它,以便仅初始化可见的JPanel。 – codethulhu
- 1. 我可以使用我的程序重新分发libmat.dll吗?
- 2. 我可以使用GridLayout,JLabel,JTextField不同大小的JTextField吗?
- 3. 我可以将`init.lua`分离到Hammerspoon中的不同组件吗?
- 4. 我可以部分重写__setattr__吗?
- 5. 我们可以用不同的网址重新加载相同的组件吗?
- 6. 我们可以在同一应用程序的其他实例中重用Java Swing应用程序组件吗?
- 7. 我可以使用我的应用程序分发JDK吗?
- 8. 我可以在表视图的不同部分有不同的行配置吗?
- 9. 我们可以在UICollectionView的不同部分设置不同的流布局吗?
- 10. 我可以用我的安装程序部署app.config吗?
- 11. 我可以用我的程序打包外部工具吗?
- 12. 我可以在django的不同文件中分割模型吗
- 13. 我可以分享到我的NativeScript应用程序吗?
- 14. 我可以使用相同的dust.js模块和不同的部分吗?
- 15. 我可以在应用程序商店更改我的应用程序的“新增内容”部分吗?
- 16. 在使用swing时,我可以在组件中分组吗?
- 17. 我可以将应用程序密钥分组吗?
- 18. 我可以将按钮添加到分组tableView的部分吗?
- 19. 我可以在主 - 从应用程序的每个部分中有不同数量的行吗?
- 20. 我可以在CSS中分组类吗?
- 21. 我可以在Linux上开发ios应用程序的后端部分吗?
- 22. 我可以使用CMake编译我的项目的不同部分,并提供不同的警告级别吗?
- 23. 我可以在我的iPhone应用程序中使用ASIHTTPRequest吗?
- 24. 我可以在我的应用程序中使用minimob advertise吗?
- 25. 我可以在我的应用程序中使用notepad ++ exe吗?
- 26. Node.js我可以永久强制不重新启动我的应用程序吗?
- 27. 我可以在我的应用程序中同时使用GCM和FCM吗?
- 28. 我的CSS规则部分起作用。你可以帮我吗?
- 29. 爪子应用程序 - 我可以为多部分主体的每个部分使用不同的标头
- 30. 我可以在CRM 2011中使用Javascript的不同事件吗?
7K行代码似乎有点过分。不要告诉我你是复制粘贴每天... –
感谢您的回复家伙! JLabel使用文本。我还为每年的每个月使用JPanels。所以在我的面板中有一堆JLabel,使我滞后。 – Storio