添加动态文本字段时,在JSX模式窗口中重绘Photoshop问题

时间:2017-01-06 02:46:39

标签: photoshop jsx extendscript redraw

在Windows中动态添加文本字段后,我正试图让我的Photoshop模式对话框正确地重绘窗口。

在Mac上没有问题,但在Windows上,字段看起来很糟糕,并且不会显示输入的内容。

我尝试了各种刷新/重绘方法,但似乎没有任何工作......

非常感谢任何帮助!

Screen shot of fields on Mac

Screen shot of fields on Windows

以下是我的脚本的简化版本:



#target photoshop

var dlg = new Window('dialog', 'Dynamic Fields Test');

dlg.populateBtn = dlg.add('button', undefined, 'Add fields', {name:'ok'});
dlg.closeBtn = dlg.add('button', undefined, 'Close', {name:'cancel'});

// Create a panel to hold fields group
dlg.dynamicPanel = dlg.add('panel', undefined, "Dynamic Fields:");
dlg.dynamicPanel.orientation = 'column';
dlg.dynamicPanel.alignChildren = 'left';

// Create group to add fields to
dlg.dynamicPanel.fields = dlg.dynamicPanel.add('group', undefined, undefined);
dlg.dynamicPanel.fields.orientation = 'column';

dlg.populateBtn.onClick = function() { dlg.close(); }

dlg.populateBtn.onClick = function()
{
    try
    {
        // Create 10 dynamic edit text fields
        for(var i = 0; i < 10; i++)
        {
            dlg.dynamicPanel.fields[i] = dlg.dynamicPanel.fields.add('group', undefined, undefined);
            dlg.dynamicPanel.fields[i].orientation = 'row';
            
            dlg.dynamicPanel.fields[i].title = dlg.dynamicPanel.fields[i].add('statictext', undefined, 'Dynamic field' + i);
            dlg.dynamicPanel.fields[i].textField = dlg.dynamicPanel.fields[i].add('edittext {text:"", characters:10, justify:"left"}');
        }

        // Try our best to refresh the window
        dlg.layout.layout(true);
    } catch(e) {
        $.writeln(e + " - line: " + e.line);
    }
}

dlg.center();
dlg.show();
&#13;
&#13;
&#13;

0 个答案:

没有答案