我遇到了问题,我设置了框架的大小,但不起作用。我找到了一个关于此的主题,但它对我没有帮助......
我尝试了getContentPane().getSize(500,500)
,但没有尝试。
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Mere extends JFrame{
private JPanel b;
public Mere(String titlu){
setSize(500,500);
setLayout(null);
this.getSmth();
pack();
show();
}
public void getSmth(){
JLabel user=new JLabel("User");
user.setBounds(10,10,80,25);
getContentPane().add(user);
JTextField userText=new JTextField(20);
userText.setBounds(100,10,160,25);
getContentPane().add(userText);
JPasswordField pas=new JPasswordField(20);
pas.setBounds(100,40,160,25);
getContentPane().add(pas);
JButton n=new JButton("Register");
n.setBounds(180,80,100,30);
getContentPane().add(n);
JLabel pass=new JLabel("Pass");
pass.setBounds(10,40,100,25);
getContentPane().add(pass);
getContentPane().setVisible(true);
}
public static void main(String[]args){
new Mere("yas");
}
}
答案 0 :(得分:4)
您在致电pack();
后致电setSize()
。
使此窗口的大小适合其子组件的首选大小和布局。如果任一维度小于上一次调用setMinimumSize方法所指定的最小大小,则会自动放大窗口的最终宽度和高度。
因此,您要覆盖getPreferredSize()
方法或删除pack()
来电。见Should I avoid the use of setPreferred/Maximum/MinimumSize?(是)
然而,最好的做法是使用布局管理器(如下所述)然后调用pack()
并让经理在为您计算preferredSize
时完成工作
您还在使用null
布局。 Swing设计用于不同的PLAF和屏幕尺寸和分辨率,而像素完美的GUI可能看起来是制作复杂GUI的最佳和更快的方法,你在这方面取得的进步越多,因此维护它的问题就越多,所以继续使用适当的Layout Manager或它们的组合。请参阅Null Layout is Evil和Why is it frowned upon to use a null layout in Java Swing?
另一件事是你没有将你的程序放在Event Dispatch Thread (EDT)上,请参阅SwingUtilities.invokeLater() why is it needed?和this answer以获取有关如何使用它的示例
< / LI>我看到的另一件事是你展开JFrame
翻译成英文,它说你的班级是 JFrame
,JFrame
当您需要将其添加到另一个Component
时不灵活,而应创建JFrame
实例,如果您确实需要扩展某些内容,请从JPanel
扩展。