大家好我正在尝试创建自己的计算器,我的图形部分有问题... 我创建了一个标签和一个按钮,我将其设置在标签中。他们出现但我不能设置他们的位置是什么问题? 谢谢你的帮助
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class calc extends JFrame {
public calc(String string) {
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("calculator");
this.setPreferredSize(new Dimension(300, 400));
JButton button1 = new JButton("calculate");
button1.setBackground(Color.cyan);
button1.setLocation(200, 100);
button1.setPreferredSize(new Dimension(100, 20));
JLabel label1 = new JLabel();
label1.setText(main.main.text); // main.main.text is a text in main class it works XD
JPanel panel1 = new JPanel();
panel1.add(label1);
panel1.add(button1);
panel1.setPreferredSize(new Dimension(300, 400));
this.getContentPane().add(panel1);
this.pack();
panel1.setVisible(true);
button1.setVisible(true);
label1.setVisible(true);
}
}
答案 0 :(得分:-1)
Swing不允许您设置对象的位置,因为它使用layout managers管理GUI的布局。如果您真的希望自己设置布局,可以使用frame.getContentPane().setLayout(null);
(或者在您的情况下getContentPane().setLayout(null)
,因为您的类已经扩展JFrame
)
然后您可以使用setSize
和setLocation
方法。但是,这是一个糟糕的想法。以下是java文档中关于null layoutManagers的内容:
虽然我们强烈建议您使用布局管理器,但您可以在没有它们的情况下执行布局。 通过将容器的布局属性设置为null,可以使容器不使用layoutmanager 使用这种称为绝对定位的策略,您必须指定每个策略的大小和位置 该容器内的组件。绝对定位的一个缺点是它不能调整 当顶层容器调整大小时。它也不能很好地适应两者之间的差异 用户和系统,例如不同的字体大小和区域设置。