2016-10-20 2 views
1

ユーザが設定ファイルを読み込むことができるMATLAB GUIがあります。私はファイル名を静的テキストフィールドに表示したい。私の問題は、文字列がテキストフィールドには長すぎてラップアラウンドすることです。私は、文字列の終わりに優先順位をつけて、折り返しなしにできるだけ多くの文字列を表示するようにします。GUIテキストのワードラップを防止する

私はエディットテキストではなく、静的なテキストを使用している場合たとえば、私は、ファイル名'C:\folders\more\folders\thisismylongfilename.txt'を持っている場合、私は現在

C:\folders\more\folders\thisism 
       ylongfilename.txt 

を見ています、私は私が私のテキストフィールドを希望C:\folders\more\folders\thisism

を見ますolders\thisismylongfilename.txt、または...ers\thisismylongfilename.txtと表示することができます。欠落している部分は、「表示」されているか、表示されているボックスの外か、表示する前に削除することができます。私は削除する文字列の量を知る必要があります。

長い文字列を固定幅のテキストボックスに正しく表示するにはどうすればよいですか?

答えて

1

これを達成する方法の1つは、テキストボックスの長さを読み取って表示する前に文字列を短くすることです。

myString = 'path/to/file/file.txt'; 

set(handles.textbox,'Units', 'Characters'); %set units to characters for convenience 
pos = get(handles.textbox,'Position'); %get the position info 
maxLength = floor(pos(3)); %extract the length of the box 
if length(myString) > maxLength % cut beginning if string is too long 
    newStart = length(myString) - maxLength + 1; 
    displayString = myString(newStart:end); 
else 
    displayString = myString; 
end 

set(handles.textbox,'String', displayString); 
+0

何らかの理由で私の「床(pos(3))」が十分ではありません。私には44という値が与えられますが、41文字しか入りません。完全な53chの文字列でロードすると、エクステントは実際には58です。これがなぜ起こっているのでしょうか? –

+0

私のテストでは、8のフォントサイズを使用しました。フォントサイズを大きくするか、別のフォントを使用すると問題が発生する可能性があります。あなたはおそらくちょうどそれを少し短くするために '0.9'のような乗数を使うことができます。 – Trogdor

+0

私はMS SansSerifで8のフォントサイズを使用しています –

関連する問題