这里主要说的是swt里面的各种布局的使用,包含:GridLayout,RowLayout,FillLayout,下图效果为FillLayout单元测试的运行结果:

swt里面的布局

swt代码实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

package swt;

 

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.KeyAdapter;

import org.eclipse.swt.events.KeyEvent;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.layout.RowData;

import org.eclipse.swt.layout.RowLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Combo;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.List;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Text;

import org.junit.Test;

/**

 *

 */

public class LayoutDemo_06 {

     

    @Test

    public void testGridLayout(){

        Display display=new Display();

        Shell topShell=new Shell(display,SWT.SHELL_TRIM|SWT.BORDER);

        topShell.setText("测试testGridLayout布局");

        topShell.setSize(800500);

        GridLayout gridLayout=new GridLayout();

        gridLayout.numColumns=3;

        gridLayout.makeColumnsEqualWidth=true;//让每列大小相等

        topShell.setLayout(gridLayout);

     

         

        Button button=new Button(topShell, SWT.PUSH);

        button.setText("按钮");

        Button button2=new Button(topShell, SWT.PUSH);

        button2.setText("a");

        Button button3=new Button(topShell, SWT.PUSH);

        button3.setText("按钮按钮按钮按钮按钮");

        Button button4=new Button(topShell, SWT.PUSH);

        GridData gridDataForbtn4=new GridData();

        //设置水平填充方式充满自己的单元格

        gridDataForbtn4.horizontalAlignment=SWT.FILL;

        //设置垂直居中

        gridDataForbtn4.verticalAlignment=SWT.CENTER;

        button4.setText("按钮4");

        button4.setLayoutData(gridDataForbtn4);

        Button button5=new Button(topShell, SWT.PUSH);

        button5.setText("a5");

        Button button6=new Button(topShell, SWT.PUSH);

        button6.setText("按钮按钮按钮按钮按钮6");

        GridData gridData6=new GridData();

        //当水平方向扩大,就跟着扩大.抢占水平方向

        gridData6.grabExcessHorizontalSpace=true;

        gridData6.horizontalAlignment=SWT.FILL;

        button6.setLayoutData(gridData6);

         

        Button button7=new Button(topShell, SWT.PUSH);

        GridData gridData=new GridData();

        gridData.horizontalSpan=3;

        gridData.horizontalAlignment=SWT.FILL;

        button7.setText("按钮7");

        button7.setLayoutData(gridData);

         

         

//      topShell.pack();

        topShell.open();

        while(!topShell.isDisposed()){

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }

     

    @Test

    public void testRowLayout(){

        Display display=new Display();

        Shell topShell=new Shell(display,SWT.SHELL_TRIM|SWT.BORDER);

        topShell.setText("测试row布局");

        topShell.setSize(800500);

        RowLayout rowLayout=new RowLayout();

        rowLayout.type=SWT.HORIZONTAL;//默认

        rowLayout.wrap=true;//默认

    //  rowLayout.pack=false;//默认是true,设置为false让每个控件等大小

    //  rowLayout.justify=true;//充满整行,平均分配空间

         

        //当水平显示时,试图让各个控件等高;当垂直显示时,试图让各个控件等宽

        rowLayout.fill=true;

        topShell.setLayout(rowLayout);

     

         

        Button button=new Button(topShell, SWT.PUSH);

        //每个控件都有setLayoutData,参数可以是rowData,GridData,用于控制单个控件

        //new RowData(100, 50)表示单独为button控件设置宽高,使用xxData的前提是使用xxLayout布局

        button.setLayoutData(new RowData(10050));

        button.setText("按钮");

        Button button2=new Button(topShell, SWT.PUSH);

        button2.setText("a");

        Button button3=new Button(topShell, SWT.PUSH);

        button3.setText("按钮按钮按钮按钮按钮");

         

         

//      topShell.pack();

        topShell.open();

        while(!topShell.isDisposed()){

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }

     

    @Test

    public void testFillOutLayout(){

        Display display=new Display();

        Shell topShell=new Shell(display,SWT.SHELL_TRIM|SWT.BORDER);

        topShell.setText("测试fill布局");

        topShell.setSize(800500);

        FillLayout fillLayout=new FillLayout();

//      fillLayout.type=SWT.VERTICAL;

        fillLayout.type=SWT.HORIZONTAL;

        topShell.setLayout(fillLayout);

         

        Button button=new Button(topShell, SWT.PUSH);

        button.setText("按钮");

        Button button2=new Button(topShell, SWT.PUSH);

        button2.setText("a");

        Button button3=new Button(topShell, SWT.PUSH);

        button3.setText("按钮按钮按钮按钮按钮");

         

        topShell.open();

        while(!topShell.isDisposed()){

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }

     

    @Test

    public void testBounds(){

        //负责和操作系统交互,如读取底层事件等

        Display display=new Display();

        //窗口

        Shell topShell=new Shell(display,SWT.SHELL_TRIM|SWT.BORDER);

        topShell.setText("测试绝对定位布局");

        topShell.setSize(800500);

         

        Button button=new Button(topShell, SWT.PUSH);

        button.setText("按钮");

        button.setBounds(20020010030);

         

//      topShell.pack();

        topShell.open();

        while(!topShell.isDisposed()){

            if (!display.readAndDispatch()) {

                display.sleep();

            }

        }

        display.dispose();

    }

}

相关文章:

  • 2021-07-29
  • 2021-10-26
  • 2021-07-17
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2021-09-05
猜你喜欢
  • 2021-09-27
  • 2021-04-04
  • 2021-09-11
  • 2022-01-12
  • 2021-10-23
  • 2021-10-13
相关资源
相似解决方案