【发布时间】:2019-11-02 22:44:08
【问题描述】:
我的问题是我想将Scrollbar 添加到组合中。
基本上我有一个带按钮的复合材料。当您按下按钮时,新内容将添加到合成中(标签和文本)。一段时间后,内容溢出复合材料。我想添加一个滚动条,以便您在添加时可以看到所有文本。
我已经尝试过ScrolledComposite,但我认为它不会滚动,因为它没有识别出复合的内容超出了
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Slider;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.layout.RowData;
import swing2swt.layout.BoxLayout;
public class test {
protected static String _intentId;
static Text intentNameText;
static Text utterance;
static Text pattern;
static int increaser=0;
static int counterNumb=1;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell( display );
shell.setSize(602,474);
Composite container = new Composite(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FILL);
container.setBounds(21, 10, 553, 407);
Label lblCreateAnIntent = new Label(container, SWT.NONE);
lblCreateAnIntent.setBounds(36, 30, 193, 20);
lblCreateAnIntent.setText("Create an Intent");
final Composite innerComposite = new Composite(container, SWT.NONE);
innerComposite.setBounds(59, 54, 475, 319);;
//innerComposite.layout();
Label lblIntentName = new Label(innerComposite, SWT.NONE);
lblIntentName.setBounds(10, 23, 97, 20);
lblIntentName.setText("Intent Name:");
intentNameText = new Text(innerComposite, SWT.BORDER);
intentNameText.setBounds(113, 23, 78, 26);
Label lblUtterances = new Label(innerComposite, SWT.NONE);
lblUtterances.setText("Utterances");
lblUtterances.setBounds(41, 83, 120, 20);
Label lblPattern = new Label(innerComposite, SWT.NONE);
lblPattern.setText("Pattern");
lblPattern.setBounds(220, 84, 120, 20);
utterance = new Text(innerComposite, SWT.BORDER);
utterance.setBounds(41, 109, 150, 26);
pattern = new Text(innerComposite, SWT.BORDER);
pattern.setBounds(220, 110, 150, 26);
final Button btnNewButton = new Button(innerComposite, SWT.NONE);
btnNewButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
increaser=increaser+40;
Label number0 = new Label(innerComposite, SWT.NONE);
number0.setText(Integer.toString(counterNumb));
number0.setBounds(20, 112, 15, 20);
counterNumb=counterNumb+1;
Label number = new Label(innerComposite, SWT.NONE);
number.setText(Integer.toString(0+counterNumb) + ".");
number.setBounds(20, 112+increaser, 15, 20);
utterance = new Text(innerComposite, SWT.BORDER);
utterance.setBounds(41, 109+increaser, 150, 26);
pattern = new Text(innerComposite, SWT.BORDER);
pattern.setBounds(220, 110+increaser, 150, 26);
btnNewButton.setBounds(41, 150+increaser, 121, 30);
}
});
btnNewButton.setBounds(41, 150, 121, 30);
btnNewButton.setText("Add Utterance");
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
我的目标是当内容超过合成时可以看到滚动条。滚动后应该看到整个内容
【问题讨论】:
-
Composite不支持滚动条 - 您必须使用ScrolledComposite -
你应该重写你的类以使用布局而不是固定定位,见eclipse.org/articles/…