【发布时间】:2012-03-13 00:04:29
【问题描述】:
我在我的框架中放了一个标签,但它拒绝移动。 SetBounds() 不起作用,如果我将任何参数放在“结果”之后,而不是 0、1 或 2,我会得到一个不正确的对齐错误,这些参数都没有把它放在正确的位置。这是我声明标签的地方:
标签结果 = new Label("Result.", 3);
这是 SetBounds 语句:
result.setBounds(0, 1500, 100, 20);
我正在编写的这个程序,我只是想让用户输入 2 个数字,将它们相加,然后使用 GUI 组件打印结果。结果是拒绝改变的标签。整个程序的代码在下面,程序还没有完成,但是如果你编译它,结果总是卡在左边,我希望它和TextFields处于同一水平。这个问题实际上发生在其他标签、Help1 和 Help2 上。请不要告诉我我必须使用swing!我不喜欢摇摆。
我尚未将事件更改为添加用户输入的位置。我从以前的程序中复制了该事件。
代码:(抱歉没有 cmets,但它不是一个庞大的程序)
import java.awt.*;
import java.awt.event.*;
public class MouseClick {
TextField number1;
TextField number2;
public static void main(String[] args) {
MouseClick MC = new MouseClick();
}
public MouseClick() {
Frame f = new Frame("Addition Time!");
Button button = new Button("Click Here To Add The Two Numbers.");
button.setBounds(175, 250, 230, 30);
button.addMouseListener(new MyMouseListener());
f.add(button);
Label help1 = new Label("Enter the first number below.");
Label help2 = new Label("Enter the second number below.");
Label exprsn1 = new Label("+", 0);
Label exprsn2 = new Label("=", 0);
Label result = new Label("Result.", 3);
number1 = new TextField("TextField1", 100);
number2 = new TextField("TextField2", 100);
help1.setBounds(50, 80, 150, 20);
help2.setBounds(250, 80, 150, 20);
exprsn1.setBounds(00, 80, 30, 30);
exprsn2.setBounds(00, 80, 30, 30);
number1.setBounds(50, 100, 100, 20);
number2.setBounds(250, 100, 100, 20);
result.setBounds(0, 1500, 100, 20);
f.add(number1);
f.add(number2);
f.add(help1);
f.add(help2);
f.add(result);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
f.setSize(600, 300);
f.setVisible(true);
}
public class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent me) {
String S = number1.getText();
number2.setText(S);
}
}
}
【问题讨论】:
-
顺便问一下,你有使用绝对布局和纯 AWT 的具体理由吗?使用 Swing + 布局管理器,这个例子会简单得多。
-
“请不要告诉我我必须使用swing!我不喜欢swing。”你试过原生PLAF吗(如@987654321的最后3张截图所示@? 顺便说一句 - 没有人必须使用 Swing 或布局,但如果他们这样做,他们获得帮助的机会会更大。
标签: java user-interface label alignment awt