我是Swing的新手。昨天我陷入了困境。
代码: -
JFrame f = new JFrame();
JButton b = new JButton("CLICK");
b.setBounds(130,100,100,40);
f.add(b);
f.setSize(400,500);//1st
f.setLayout(null);//2nd
f.setVisible(true);//3rd
当我运行上面的代码时,它会显示一个名为" CLICK"的按钮的输出。放在框架内。但是,如果我重新排序这样的最后3种方法:
f.setVisible(true);
f.setLayout(null);
f.setSize(400,500);
然后,显示框架内部没有按钮。 为什么?
答案 0 :(得分:2)
修复不使用布局管理器的问题的方法是 使用 布局管理器。
例如,此GUI使用布局,边距和填充来实现与第一个GUI中相同的基本外观。
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class ButtonGui {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("Button GUI");
JButton b = new JButton("CLICK");
// adjust numbers to requirement
b.setMargin(new Insets(12, 35, 12, 35));
// since a button has a border, we need a panel to which
// we can add a 2nd (empty) border.
JPanel p = new JPanel(new GridLayout());
// adjust numbers to requirement
p.setBorder(new EmptyBorder(100, 130, 100, 130));
p.add(b);
f.add(p);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.pack();
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
答案 1 :(得分:-1)
.setVisible(true)始终是最后一个方法调用。设置swing组件的特征,然后使用此方法告诉它显示自己。 HTH。
答案 2 :(得分:-1)
我遇到了同样的问题。 以下列方式尝试代码..
f.setSize(800,800);
f.setLayout(null);
f.setVisible(true);
用于eclipse.works罚款!!!