⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showhanoiframe.java~3~

📁 自己写的汉诺塔java程序。通过调用ShowHanoiFrame开启主界面及可运行程序。软件语言java
💻 JAVA~3~
📖 第 1 页 / 共 2 页
字号:
        bar.addSeparator();
        bar.add(startLabel);
        bar.add(pauseLabel);
        bar.add(stopLabel);
        bar.addSeparator();
        bar.add(setupLabel);
        bar.addSeparator();
        bar.add(messageLabel);
        bar.add(Box.createHorizontalGlue());

    }

    public void mouseClicked(MouseEvent e) {
        JLabel label = (JLabel) e.getSource();
        if (label == newLabel) {
            stop();
        } else if (label == openLabel) {
            try {
                String fileName=openFile();
                if(fileName!=null){
                    FileInputStream fis = new FileInputStream(fileName);
                    ObjectInputStream ois = new ObjectInputStream(fis);
                    HannoiTowerPanel hannoi = (HannoiTowerPanel) ois.readObject();
                    ois.close();
                    tower.setMyThreadStop();
                    this.remove(tower);
                    tower = new HannoiTowerPanel(hannoi.getNumDisks(),
                                                 towerName, 0,
                                                 hannoi.getThreadState());
                    tower.getMyThread().start();
                    cp.add(tower, BorderLayout.CENTER);
                    validate();
                }
            } catch (Exception ee) {ee.printStackTrace();}

        } else if (label == saveLabel) {
            try {
                String fileName = saveFile();
                if (fileName != null) {
                    FileOutputStream fos = new FileOutputStream(fileName+".dat");
                    ObjectOutputStream oos = new ObjectOutputStream(fos);
                    oos.writeObject(tower);
                    oos.flush();
                    fos.close();
                }
            } catch (Exception ee) {}
        } else if (label == startLabel) {
            if (tower.getMyThread().isAlive()) {
                synchronized (tower.getMyThread()) {
                    tower.setLimitState(Integer.MIN_VALUE);
                    tower.setSpeed(this.speed);
                    tower.setPause(false);
                    tower.getMyThread().notify();
                }
            }else{
                play();
            }
        } else if (label == pauseLabel) {
           pauseThread();
        } else if (label == stopLabel) {
            stop();
        } else if (label == setupLabel) {
            new SetupWindow(this);
        } else if (label == messageLabel) {
            JOptionPane.showConfirmDialog(ShowHanoiFrame.this, "土木水利学院 水力学及河流动力学\n  作者:王艳君-20706162", "作者信息",
                          JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
        }

    }

    public void mousePressed(MouseEvent e) {
        JLabel label = (JLabel) e.getSource();
        if (label == newLabel) {
            newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == openLabel) {
            openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == saveLabel) {
            saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == startLabel) {
            startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == pauseLabel) {
            pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == stopLabel) {
            stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == setupLabel) {
            setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        } else if (label == messageLabel) {
            messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
        }

    }

    public void mouseReleased(MouseEvent e) {
        JLabel label = (JLabel) e.getSource();
        Rectangle rect;
        if (label == newLabel) {
            rect = newLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == openLabel) {
            rect = openLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == saveLabel) {
            rect = saveLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == startLabel) {
            rect = startLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == pauseLabel) {
            rect = pauseLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == stopLabel) {
            rect = stopLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == setupLabel) {
            rect = setupLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == messageLabel) {
            rect = messageLabel.getVisibleRect();
            if (rect.contains(e.getPoint()))
                messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        }

    }

    public void mouseEntered(MouseEvent e) {
        JLabel label = (JLabel) e.getSource();
        if (label == newLabel) {
            newLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == openLabel) {
            openLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == saveLabel) {
            saveLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == startLabel) {
            startLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == pauseLabel) {
            pauseLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == stopLabel) {
            stopLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == setupLabel) {
            setupLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        } else if (label == messageLabel) {
            messageLabel.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
        }

    }

    public void mouseExited(MouseEvent e) {
        JLabel label = (JLabel) e.getSource();
        if (label == newLabel) {
            newLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == openLabel) {
            openLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == saveLabel) {
            saveLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == startLabel) {
            startLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == pauseLabel) {
            pauseLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == stopLabel) {
            stopLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == setupLabel) {
            setupLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        } else if (label == messageLabel) {
            messageLabel.setBorder(BorderFactory.createEmptyBorder(3,3,3,3));
        }

    }

    public String openFile(){
        JFileChooser chooser = new JFileChooser();
        ExampleFileFilter filter = new ExampleFileFilter();
        filter.addExtension("dat");
        filter.setDescription("DAT 文件");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showOpenDialog(ShowHanoiFrame.this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            return(""+chooser.getSelectedFile());
        }
        return null;
    }

    public String saveFile(){
        JFileChooser chooser = new JFileChooser();
        ExampleFileFilter filter = new ExampleFileFilter();
        filter.addExtension("dat");
        filter.setDescription("DAT 文件");
        chooser.setFileFilter(filter);
        int returnVal = chooser.showSaveDialog(ShowHanoiFrame.this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            return(""+chooser.getSelectedFile());
        }
        return null;
    }


    public void play() {
        tower.setMyThreadStop();
        this.remove(tower);
        tower = new HannoiTowerPanel(numDisks, towerName, speed,Integer.MIN_VALUE);
        cp.add(tower, BorderLayout.CENTER);
        validate();
        tower.getMyThread().start();
    }

    public void pauseThread(){
        synchronized (tower.getMyThread()) {
            tower.setPause(true);
        }
    }

    public void stop(){
        tower.setMyThreadStop();
        this.remove(tower);
        tower = new HannoiTowerPanel(numDisks, towerName, speed,Integer.MIN_VALUE);
        cp.add(tower, BorderLayout.CENTER);
        validate();
    }

    public void setNumDisks(int numDisks){
        this.numDisks=numDisks;
    }

    public int getNumDisks(){
        return this.numDisks;
    }

    public void setSpeed(int speed){
        this.speed=speed;
    }

    public int getSpeed(){
        return this.speed;
    }

    public void setTower(HannoiTowerPanel tower){
        this.tower=tower;
    }

    public HannoiTowerPanel getTower(){
        return this.tower;
    }

    public void setCp(HannoiTowerPanel tower){
        this.cp.add(tower,BorderLayout.CENTER);
    }

    public Container getCp(){
        return this.cp;
    }



    public static void main(String[] args) {
        ShowHanoiFrame desktopjframe = new ShowHanoiFrame();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -