我正在尝试用Java编写幻灯片放映程序,并希望尽可能简化实现。
目标是展示一系列幻灯片,每个幻灯片都有导航按钮,以及依赖幻灯片内容的其他按钮。 (显示文字的幻灯片将显示magnifyTextButton
,带图片的幻灯片不会显示此按钮。)
我认为抽象的Slide
类是合适的,每个幻灯片类型都有子类:TextSlide
和ImageSlide
。我将如何实现这些子类,以便magnifyTextButton
显示在TextSlide
中,而不显示在任何其他幻灯片中?
此外,我的Slide
课程延长了JFrame
。如果show被设计为在单个窗口中发生,那么Slide
的子类的每个实例都需要构造一个JFrame对象吗?
答案 0 :(得分:3)
我如何实现这些子类以便magnifyTextButton 会出现在TextSlides中,而不会出现在任何其他幻灯片中吗?
您可以使用标记来决定是否显示放大按钮。该标志在TextSlides中为true,在其他中为false。或者您可以直接在TextSlide中使用此按钮而不是其他,这样就无需检查任何内容。与放大相关的处理只会在TextSlide的一个类中进行。
Slide的子类的每个实例都需要构造一个JFrame 如果节目被设计为在一个窗口中发生,就像对象一样 在PowerPoint中?
在我看来,幻灯片分类应该延伸JPanel
。您可以在一个框架上轻松更改面板。
可以帮助您解决的一些问题/答案:
答案 1 :(得分:3)
将图片Icon / ImageIcon添加到JLabel
把JLabel包含Image作为新卡
答案 2 :(得分:1)
你在这里有很多事情,但是让我们看看能不能帮忙。
1:我看到了两个如何布局“magnifyTextButton”的选项。第一个是使它成为TextSlide
独有的方法。 ImageSlide
没有理由需要了解magnifyTextButton
的任何信息。在这种格式中,您将在您的总体抽象类中有一个“绘制”抽象方法(然后可能最好留作接口)。我不喜欢这种方法,就像下面的方法一样。
您的另一个选择是让MagnifyTextButton
成为decorator。这样,您可以将MagnifyTextButton
混合并匹配到其中包含文本的其他类(TextSlide
的扩展名,您可能非常需要)。这将为您提供更多功能,并且要求您的Slide
课程更少了解MagnifyTextButtons
!
2:我认为你希望这是一个Jpanel而不是Jframe。