【发布时间】:2023-12-26 09:22:01
【问题描述】:
大家好,我正在尝试创建自己的计算器,但图形部分有问题... 我创建了一个标签和一个按钮,并将其设置在一个标签中。他们出现了,但我无法设置他们的位置有什么问题? 感谢帮助
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);
}
}
【问题讨论】:
-
这里的
main.main.text是什么?也为此共享代码。使用适当的 getter 方法来访问它。 -
您正在尝试设置添加到 JPanel 的组件的绝对位置,该 JPanel 默认使用 FlowLayout,而 FlowLayouts 不尊重绝对定位。空布局,做,但你应该避免使用空布局,因为这会导致非常不灵活的 GUI,虽然它们在一个平台上看起来不错,但在大多数其他平台或屏幕分辨率上看起来很糟糕,而且很难更新和维护。更好的解决方案:向我们展示您想要实现的目标的图片,或者更全面地描述您的 GUI 布局,我们将能够更好地帮助您解决问题。
-
Swing GUI 可能必须在不同的平台上工作,使用不同的 PLAF,在不同的屏幕尺寸和分辨率上使用不同的字体大小默认设置。因此,它们不利于组件的精确放置。而是使用布局管理器,或 combinations of layout managers 以及 layout padding and borders 用于空白。
标签: java swing jframe jpanel jbutton