亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建以非活動文本作為后綴的SWT文本字段?

如何創建以非活動文本作為后綴的SWT文本字段?

LEATH 2022-09-14 17:34:45
我正在使用 Java 的 SWT 工具包創建一個包含文本字段輸入的 GUI。這些輸入字段需要數字輸入,并分配有單位。我正在嘗試創建一種花哨的方法,將字段中的單位作為文本的固定后綴進行集成,以便用戶只能編輯數字部分。我還希望后綴灰顯,以便用戶知道它已被禁用 - 如下所示:在搜索時,我看到了一些帶有Swing掩碼格式化程序的解決方案,這些解決方案可能會起作用,但我有點希望SWT可能存在一些默認值。關于如何做到這一點有什么建議嗎?該字段是矩陣的一部分,因此我不能簡單地將單位添加到標題標簽中。我想我可以在文本字段之后創建另一個列,以提供單位作為標簽,但我要追求更直觀和更美觀的東西。有什么建議嗎?
查看完整描述

1 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

一種選擇是將 和 小部件分組到同一個合成中,并將 上的文本設置為所需的后綴:TextLabelLabel

在此處輸入圖像描述

后綴左側的區域是可以編輯的單行文本字段,后綴是禁用的 。Label

public class TextWithSuffixExample {


    public class TextWithSuffix {


        public TextWithSuffix(final Composite parent) {

            // The border gives the appearance of a single component

            final Composite baseComposite = new Composite(parent, SWT.BORDER);

            baseComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));

            final GridLayout baseCompositeGridLayout = new GridLayout(2, false);

            baseCompositeGridLayout.marginHeight = 0;

            baseCompositeGridLayout.marginWidth = 0;

            baseComposite.setLayout(baseCompositeGridLayout);


            // You can set the background color and force it on 

            // the children (the Text and Label objects) to add 

            // to the illusion of a single component

            baseComposite.setBackground(new Color(parent.getDisplay(), new RGB(255, 255, 255)));

            baseComposite.setBackgroundMode(SWT.INHERIT_FORCE);


            final Text text = new Text(baseComposite, SWT.SINGLE | SWT.RIGHT);

            text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));


            final Label label = new Label(baseComposite, SWT.NONE);

            label.setEnabled(false);

            label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true));

            label.setText("kg/m^3");

        }


    }


    final Display display;

    final Shell shell;


    public TextWithSuffixExample() {

        display = new Display();

        shell = new Shell(display);

        shell.setLayout(new GridLayout());

        shell.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));


        new TextWithSuffix(shell);

    }


    public void run() {

        shell.setSize(200, 100);

        shell.open();

        while (!shell.isDisposed()) {

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }


    public static void main(final String[] args) {

        new TextWithSuffixExample().run();

    }


}


查看完整回答
反對 回復 2022-09-14
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號