2

私は Midi Sequencer で遊んでいて、ControlEventListener を使用して音楽のビートに基づいてランダムな色、形、および場所でパネル上の四角形を再描画する演習を行っています。ラップトップでこれを行うと、すべて正常に動作します。ただし、PC でこれを行うと、次のエラーが発生します。

Aug 07, 2013 1:10:11 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
BUILD SUCCESSFUL (total time: 27 seconds)

プログラムは問題なく動作します。コンパイルして、本来あるべきことを正確に実行します。前述したように、ラップトップでこの正確なコードを使用しても問題はありません。
また、このコードの多くは Java に関する本から抜粋したものです。パネルにいくつかの変更を加えて、同じことを少し異なる方法で行うようにコードを微調整しただけです。このコードの意味を知っている人はいますか?私はそれをグーグルで検索しましたが、何も見つかりませんでした。この本は、この種のコードについて何も述べていません。

どんな助けでも大歓迎です。これをお読みいただき、また、この質問にご協力いただきありがとうございます。

This is the code in its entirity:

import javax.swing.*;
import java.awt.*;
import javax.sound.midi.*;

public class Check implements ControllerEventListener{
    JFrame frame;
    DrawPanel dp;
    public void controlChange(ShortMessage a) {
        frame.repaint();
    }
    public static void main(String[] args) {
        new Check().buildGui();
    }
    private void buildGui() {
        frame = new JFrame("Woot");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        dp = new DrawPanel();

        frame.getContentPane().add(dp);

        frame.setVisible(true);
        frame.setSize(500, 500);
        frame.setResizable(false);
        frame.setLocation(375, 50);
        playMusic();
    }
    private void playMusic() {
        try {
        Sequencer sequencer = MidiSystem.getSequencer();
        sequencer.open();
        int[] trackedInt = {127};
        sequencer.addControllerEventListener(this, trackedInt);

        Sequence seq = new Sequence(Sequence.PPQ,4);
        Track track = seq.createTrack();

        for(int i = 0; i < 50; i++) {
            int rI = (int)(Math.random()*50)+30;
            track.add(makeEvent(144,9,rI,100,i*10));
            track.add(makeEvent(176,1,127,0,i*10));
            track.add(makeEvent(128,9,rI,0,i*2+2));
        }

        sequencer.setSequence(seq);
        sequencer.setTempoInBPM(160);
        sequencer.start();
        } catch(Exception exc){}
    }
    private MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
       MidiEvent event = null;
       try {
           ShortMessage a = new ShortMessage();
           a.setMessage(comd, chan, one, two);
           event = new MidiEvent(a, tick);
       } catch (Exception exc){}
       return event;
    }
}
class DrawPanel extends JPanel {
    public void paintComponent(Graphics g) {
        int r = (int)(Math.random()*256);
        int gr = (int)(Math.random()*256);
        int b = (int)(Math.random()*256);
        g.setColor(new Color(r,gr,b));
        int x = (int)(Math.random()*200)+20;
        int y = (int)(Math.random()*200)+20;
        int h = (int)(Math.random()*500)+20;
        int w = (int)(Math.random()*500)+20;
        g.fillRect(x, y, w, h);
    }
}
4

1 に答える 1

-2

警告ログを閉じてください:

PlatformLogger.getLogger("java.util.prefs")
        .setLevel(PlatformLogger.Level.SEVERE);
于 2013-12-15T16:44:30.903 に答える