FaqMultipleMonitorsJa

モニターを複数使っています。なぜコンテキストメニューが違うスクリーンに表示されてしまうのですか?

動くはずですが…

複数モニターサポートは AWT API (GraphicsEnvironment, GraphicsDevice, GraphicsConfiguration) それぞれの正しい実装に依存しています。テストプログラムをコンパイルして実行してみてください。このプログラムはいくつかの JFrames をそれぞれのモニターに表示するはずれす。フレームが最初のモニターにすべて配置されるのであればグラフィックカードとドライバーの情報とともに JDK に対してバグを登録してください。

もし以下のプログラムが正しく動くのにもかかわらず NetBeans が正しく動かないのであれば NetBeans に対してバグを報告してください。


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

public class MultiMonitors
{
    public static void main(String[] argv) {
        GraphicsEnvironment ge =
           GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] gs = ge.getScreenDevices();
        for (int j = 0; j < gs.length; j++) {
          GraphicsDevice gd = gs[J];
          GraphicsConfiguration[] gc =
             gd.getConfigurations();
             for (int i=0; i < gc.length; i++) {
               JFrame f =
                  new JFrame(gs[J].getDefaultConfiguration());
               GCCanvas c = new GCCanvas(gc[I]);
               Rectangle gcBounds = gc[I].getBounds();
               int xoffs = gcBounds.x;
               int yoffs = gcBounds.y;
               f.getContentPane().add(c);
               f.setTitle("Screen# "+Integer.toString(j)+", GC# "+Integer.toString(i));
               f.setSize(300, 150);
               f.setLocation((i*50)+xoffs, (i*60)+yoffs);
               f.show();
             }
        }
    }

    static class GCCanvas extends Canvas
    {

        GraphicsConfiguration gc;
        Rectangle bounds;

        public GCCanvas(GraphicsConfiguration gc) {
            super(gc);
            this.gc = gc;
            bounds = gc.getBounds();
        }

        public Dimension getPreferredSize() {
            return new Dimension(300, 150);
        }

        public void paint(Graphics g) {
            g.setColor(Color.red);
            g.fillRect(0, 0, 100, 150);
            g.setColor(Color.green);
            g.fillRect(100, 0, 100, 150);
            g.setColor(Color.blue);
            g.fillRect(200, 0, 100, 150);
            g.setColor(Color.black);
            g.drawString("ScreenSize="+
                         Integer.toString(bounds.width)+
                         "X"+ Integer.toString(bounds.height), 10, 15);
            g.drawString(gc.toString(), 10, 30);
        }
    }
}



Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo