我在这里有设计问题。听起来有两种可能的选择,但我不喜欢这两种选择。设计:扩展JPanel两次或传递JPanel作为参数?
我需要在我的JPanel中提供两个功能。
- 画几条线
- 画几个字符串
广告
- 方法两次
延长。如果我只需要画线,然后我就可以复制从以下答案中选择最佳解决方案。
Draw a line in a JPanel with button click in Java
public class LinePanel extends JPanel {
...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
但因为我需要添加第二个功能,我需要做这样的事情
public class LineStringPanel extends JPanel {
这会使LinePanel只是无用的中级班。
- 创建两个类LineDrawer和StringDrawer,并将JPanel作为参数传递给将执行绘制的某个方法。这里的问题,我需要调用哪个不被推荐。
Graphics g = panel.getGraphics();
你觉得可以推荐?
UPD: 在JPanel内部有数量众多的JLabels作为代表单元和特征的子代。
这些行是单位的一些特征之间的关系,字符串是一些行为的通知。
所以我想在儿童JLabels的顶部(正面)显示字符串。
另外JPanel在JScrollPane中。
绘制到'BufferedImage'并显示在'JLabel'中,如[本答案](http://stackoverflow.com/a/12683632/418556)所示。 –
@Nikolay库兹涅佐夫请不要攻击,默认情况下工具和扩展是关于很短的例子作为答案....,图形g = panel.getGraphics();是关于打印到文件,快照,过期(内部)在第一个事件从相关的API,请你最终的目标 – mKorbel
@AndrewThompson,这个JPanel应该有许多子组件 - JLabels与ImageIcons。线条和字符串应该是最前面的,将显示在JLabels上方。你认为它会起作用吗? –