如何用Java实现多个图层的切换?就像pohotshop中的多个图层,在右边的图层切换工具上点不同图层,显示区域就会显示相应层的图象。 现在我要用Java做这个东西,各位给点思路!!谢谢!

解决方案 »

  1.   

    用层来实现
    JLayeredPane lp = frame.getLayeredPane();
      

  2.   

    可以考虑每个图层都用一个BufferedImage表示,
    显示哪个图层就把哪个BufferedImage画在画布上,
    合成的时候按照不同的透明度把他们合成一个BufferedImage。
      

  3.   

    具体就是:
    用一个图形链表LinkedList来存放所画的图形
    然后按照从头到尾的顺序paint就可以了
    后画的自然就覆盖了先画的了
      

  4.   

    你可以参考我的一段代码:
        private void upActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upActionPerformed
    // TODO 将在此处添加您的处理代码:
            if (currentFrame != null && currentFrame.currentShape != null) {
                JShape s = currentFrame.currentShape;
                int ord = s.getOrder();
                if (ord == currentFrame.shapeList.size()) {
                    JOptionPane.showConfirmDialog(this, "已经是最上层!", "提示",
                        JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);
                }//如果已经是最上层
                else {
                    currentFrame.shapeList.remove(s);
                    currentFrame.shapeList.add(ord, s);//移动图形
                    /*重新设置层次值*/
                    for (int i = ord - 1; i < currentFrame.shapeList.size(); i++) {
                        s = currentFrame.shapeList.get(i);
                        s.setOrder(i + 1);
                    }
                    currentFrame.repaint();
                }
            }
            else {
                JOptionPane.showConfirmDialog(this, "有且仅有一个图形可以移动!", "错误",
                        JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
            }
        }//GEN-LAST:event_upActionPerformed