[英]Printing text to a textfield in java
我仍在研究那個我昨天問過一個問題的程序。
所以我有這段代碼:
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shlKoffieHalenApp = new Shell();
shlKoffieHalenApp.setMinimumSize(new Point(610, 430));
shlKoffieHalenApp.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
shlKoffieHalenApp.setSize(610, 430);
shlKoffieHalenApp.setText("Koffie Halen App");
shlKoffieHalenApp.setLayout(null);
List list = new List(shlKoffieHalenApp, SWT.BORDER);
list.setFont(SWTResourceManager.getFont("Sans", 13, SWT.BOLD));
list.setItems(new String[] {"Anne", "", "Bas", "", "Daan", "", "Nick", "", "Paul", "", "Peter", "", "Sebastien"});
list.setBackground(SWTResourceManager.getColor(SWT.COLOR_GRAY));
list.setBounds(10, 10, 113, 377);
ButtonAnne = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonAnne.setBounds(129, 17, 137, 16);
ButtonAnne.setText("Aanwezig/Afwezig");
ButtonBas = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonBas.setBounds(129, 67, 137, 16);
ButtonBas.setText("Aanwezig/Afwezig");
ButtonDaan = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonDaan.setBounds(129, 120, 137, 16);
ButtonDaan.setText("Aanwezig/Afwezig");
ButtonNick = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonNick.setBounds(129, 173, 137, 16);
ButtonNick.setText("Aanwezig/Afwezig");
ButtonPaul = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonPaul.setBounds(129, 224, 137, 16);
ButtonPaul.setText("Aanwezig/Afwezig");
ButtonPeter = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonPeter.setBounds(129, 276, 137, 16);
ButtonPeter.setText("Aanwezig/Afwezig");
ButtonSebastien = new Button(shlKoffieHalenApp, SWT.CHECK);
ButtonSebastien.setBounds(129, 329, 137, 16);
ButtonSebastien.setText("Aanwezig/Afwezig");
ButtonKoffie = new Button(shlKoffieHalenApp, SWT.NONE);
ButtonKoffie.setBounds(394, 53, 121, 34);
ButtonKoffie.setText("Klik voor koffie!");
Answer = new Text(shlKoffieHalenApp, SWT.BORDER);
Answer.setEditable(false);
Answer.getText();
Answer.setBounds(355, 106, 200, 30);
shlKoffieHalenApp.open();
shlKoffieHalenApp.layout();
while (!shlKoffieHalenApp.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
Random generate = new Random();
ArrayList<String> names = new ArrayList<String>(); {
if(ButtonAnne.getSelection() == true) {
names.add("Anne");
}
if(ButtonBas.getSelection() == true) {
names.add("Bas");
}
if(ButtonDaan.getSelection() == true) {
names.add("Daan");
}
if(ButtonNick.getSelection() == true) {
names.add("Nick");
}
if(ButtonPaul.getSelection() == true) {
names.add("Paul");
}
if(ButtonPeter.getSelection() == true) {
names.add("Peter");
}
if(ButtonSebastien.getSelection() == true) {
names.add("Sebastien");
}
if(ButtonKoffie.getSelection() == true) {
int randomIndex = generate.nextInt(names.size());
Answer.setText(names.get(randomIndex) + " moet koffie halen!");
}
}
}
}
答案是我想打印從 ArrayList 中選取的隨機名稱的文本字段。 我在這里缺少什么? 我試圖創建一種方法,但沒有按計划進行。
你不應該在SWT
事件循環中放置任何東西,用戶界面是事件驅動的,你不應該使用輪詢。
您應該向組件添加事件偵聽器,例如,如果您想在按下按鈕時進行攔截,則應該向其添加一個SelectionListener
:
buttonKoffie = new Button(shlKoffieHalenApp, SWT.NONE);
buttonKoffie.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
}
@Override
public void widgetSelected(SelectionEvent arg0) {
// this method is called when the button is pressed
int randomIndex = generate.nextInt(names.size());
answer.setText(names.get(randomIndex) + " moet koffie halen!");
}
});
閱讀各種組件的文檔以了解您可以添加哪些偵聽器以及它們的行為方式。
Button
文檔還指定getSelection
僅適用於CHECK
、 RADIO
和TOGGLE
按鈕,它始終為PUSH
按鈕返回false
。
將代碼放入SWT
事件循環的另一個問題是您不斷地重新創建names
數組,因此您總是會發現它是空的。 您應該創建一次並使用復選按鈕的事件偵聽器來填充它。
其他建議:
代替
Answer.setText(randomIndex + " moet koffie halen!");
和
Answer.setText(names.get(randomIndex) + " moet koffie halen!");
這行代碼:
int randomIndex = generate.nextInt(names.size());
Answer.setText(randomIndex + " moet koffie halen!");
在 textView 中只設置你得到的隨機整數,你需要列表中的隨機元素......然后你需要使用names.get(randomIndex)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.