如何更改通知横幅的方向?

时间:2019-06-08 14:36:54

标签: java notifications

我对DS Desktop通知库有问题 在此库中,所有通知横幅均已从左到右定向 我想将这些通知的方向从LTR更改为RTL (图标大部分位于横幅的右侧,标题和消息也需要从横幅的右侧开始 我如何在此库中执行此操作? https://i.imgur.com/uTlOpqs.png“截图”

我已经尝试过将“ applyComponentOrientation”用于框架,但无法正常工作

    private static class DesktopLayoutFrame extends JDialog {
    Image bg;
    boolean nativeTrans;

    boolean finished=true;
    boolean clicked=false;

    public DesktopLayoutFrame() {
        super((JFrame)null,"DesktopLayoutFrame");
        setUndecorated(true);
        nativeTrans=Utils.isTranslucencySupported();
        setBackground(new Color(0,0,0,nativeTrans? 0:255));
        setContentPane(new JComponent(){
            @Override
            public void paintComponent(Graphics g){
                render((Graphics2D)g);
            }
        });
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt){
                clicked=true;
            }
        });
        setFocusableWindowState(false);
        setAlwaysOnTop(true);
        System.out.println("Desktop Notify Frame deployed.");
    }

    @Override
    public void setVisible(boolean visible) {
        boolean bool=isVisible();
        if (visible) {
            Rectangle screenSize = Utils.getScreenSize();
            setBounds(screenSize.x+screenSize.width-310, screenSize.y,
                      305, screenSize.height-5);
            if (!bool && !nativeTrans)
                bg=Utils.getBackgroundCap(getBounds());
        }
        super.setVisible(visible);
    }

    /**
     * Paints the window contents.
     * @param rd a graphics2D object received from the original paint event.
     */
    public void render(Graphics2D rd) {
        Point p = getMousePosition();
        finished = false;
        int x = 0, y = getHeight();
        long l = System.currentTimeMillis();
        if (windows.isEmpty()) finished = true;
        int cur = Cursor.DEFAULT_CURSOR;
        if (!nativeTrans) rd.drawImage(bg, 0, 0, this);
        for (int i = 0; i < windows.size(); i++) {
            DesktopNotify window = windows.get(i);
            if (window.isVisible()) {
                y -= window.h;
                if (window.popupStart == 0) {
                    window.popupStart = System.currentTimeMillis();
                }
                if (y > 0) {
                    boolean hover = false;
                    if (p != null) {
                        if (p.y > y && p.y < y + window.h) {
                            hover = true;
                            if (window.getAction() != null) {
                                cur = Cursor.HAND_CURSOR;
                            }
                            if (clicked) {
                                if (window.getAction() != null) {
                                    final DesktopNotify w = window;
                                    final long lf = l;
                                    java.awt.EventQueue.invokeLater(new Runnable(){@Override public void run(){
                                        w.getAction().actionPerformed(new ActionEvent(w, ActionEvent.ACTION_PERFORMED, "fireAction", lf, 0));
                                    }});
                                }
                                if (window.expTime() == Long.MAX_VALUE) {
                                    window.timeOut = l - window.popupStart + 500;
                                }
                            }
                        }
                    }
                    window.render(x, y, hover, rd, l);
                    if (window.markedForHide) {
                        window.timeOut = l - window.popupStart + 500;
                        window.markedForHide = false;
                    }
                } else {
                    window.popupStart = l;
                }
                if (l > window.expTime() || (y <= 0 && window.markedForHide)) {
                    window.markedForHide = false;
                    window.setVisible(false);
                    windows.remove(window);
                    i--;
                }
                y -= 5;
            }
        }
        clicked = false;
        setCursor(new Cursor(cur));
    }
}

我认为必须为此编辑“ DesktopNotifyDriver.java”中的上述代码。对不起我的英语不好 请帮我解决这个问题

0 个答案:

没有答案