1

GUIDE を使用して GUI を構築しています。クリックした後にいくつかのメッセージを受信したいリストボックスがありsend_buttonますが、ボタンをクリックするたびに最初の行にメッセージが表示されます。

function send_button_Callback(hObject, eventdata, handles)
% hObject    handle to send_button (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)  

  % get text
  dstID = get(handles.dest_ID,'String');
  msg = get(handles.message_box,'String');    % message_box = editbox

  % Build message and send
  msg = {['< ', dstID, ' >     ', msg]};      % dstID = number
  set(handles.message_list, 'String', msg);   % message_list = listbox

のようなものを得るにはどうすればよいですか

<3> Message one
<3> Message two
<3> Message three

これは String が原因で発生すると思いますがmsg、 a またはそのようなものを挿入する方法がわかりません'\n'

4

3 に答える 3

0

これを試して:

...
msg=get(handles.message_box,'String');    % message_box = editbox
...
cell_listbox = get(handles.message_list,'string');
...
cell_listbox(end+1)=msg;

エラーが発生した場合は、エラーが発生した行を提供してください:)

于 2013-08-13T12:35:39.550 に答える
0

新しいメッセージを先頭に追加する場合は、新しいメッセージで始まる cell 配列が必要です。メッセージが長すぎる場合は、形を変えてください。dstID次の例では、 が 9 より大きい場合、最初の行が長すぎる可能性があることに注意してくださいmaxlinelength。これを考慮して修正する必要がある場合があります。

maxlinelength = 25; %// maximum number of characters per line -5
current = get(handles.message_list,'string');

msg = get(handles.message_box,'String');    %// message_box = editbox
rows = ceil(length(msg)/maxlinelength);
msg = [char(8,8,8,8)' '< ' dstID ' > ' msg]; %'// append dstID display
newmsg = cell(1,rows);
for i=1:rows-1 %// for each row
    newmsg{i} = ['    ' a(1:maxlinelength)]; %// store the row in the new cell
    a = a(maxlinelength:end); %// cut off the row from the message
end
newmsg{rows} = ['    ' a]; %// last cell is the rest of msg

new = {msg,current{:}}; %// build new cell aray with msg at the front
set(handles.message_list, 'String', new);   %// message_list = listbox

最大行数を表示したい場合は、次のようnewに設定する前に切り取ることもでき'String'ます。

if length(new)>maxlines
    new = new(1:maxlines);
end

の行は、後で追加される 4 つのスペースを削除するためにchar(8,8,8,8)'、前にバックスペースを置きます。msg改行インデントを変更する場合は、ここでも 8 の数を変更します。たとえば、2 つのスペースでインデントすることを選択した場合、これは になりchar(8,8)'ます。

于 2014-01-29T16:44:02.633 に答える