java新手求解 布局管理器 的问题? 弄懂追加30分。。

学了布局管理器后,我想试试不用类的编法,发生了下面的错误:importjavax.swing.*;importjava.awt.*;publicclassWithoutB... 学了布局管理器后,我想试试不用类的编法,发生了下面的错误:
import javax.swing.*;
import java.awt.*;
public class WithoutBook extends JFrame {
public static void main(String[] args) {
JFrame frame = new JFrame();

setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
//错误提示:Cannot make a static reference to the non-static method setLayout(LayoutManager) from the type JFrame

// new FlowLayout(FlowLayout.LEFT,10,20);
//如果屏蔽上句用这句,窗口只显示最后一个组件,而且此组件是全窗口大小的,不是像正常类编写一样比较小

frame.add(new JLabel("name:"));
frame.add(new JTextField(8));

//JButton jbt = new JButton("dota");
frame.add(new JButton("DOTA"));
frame.add(new JButton("MVP 20"));
frame.add(new JButton("1350"));

frame.setTitle("Play DOTA");
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
展开
 我来答
kkrr056
2012-11-09 · TA获得超过259个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:243万
展开全部
你好,你看看你的setLayout应该是谁调用的,应该是frame.setLayout(...),而不是直接写setLayout.
直接写的话,相当于在WhthoutBook中调用setLayout,但是这个方法不存在,所以会报错,说不能在静态方法(main方法)中调用非静态的方法
百度网友12ee0fd
2012-11-09 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2294万
展开全部
在setLayout前加上实例名frame,
把extends JFrame 去掉 //根本没有用到

使用了布局管理器,把setSize替换成 pack();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2012-11-09 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1590万
展开全部
setLayout(new FlowLayout(FlowLayout.LEFT,10,20));

改成
frame.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));

虽然你这个类继承了JFrame,但它的setLayout方法不是静态的,
所以不能命名用。

下边的就是使用继承类中的方法。
-----------------------------------------------------------------------------------------------
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class WithoutBook extends JFrame {
public WithoutBook() {
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));
// 错误提示:Cannot make a static reference to the non-static method
// setLayout(LayoutManager) from the type JFrame
// new FlowLayout(FlowLayout.LEFT,10,20);
// 如果屏蔽上句用这句,窗口只显示最后一个组件,而且此组件是全窗口大小的,不是像正常类编写一样比较小
add(new JLabel("name:"));
add(new JTextField(8));
// JButton jbt = new JButton("dota");
add(new JButton("DOTA"));
add(new JButton("MVP 20"));
add(new JButton("1350"));
setTitle("Play DOTA");
setSize(500, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new WithoutBook();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e4bab09
2012-11-09 · TA获得超过1191个赞
知道答主
回答量:43
采纳率:0%
帮助的人:13.9万
展开全部
setLayout(new FlowLayout(FlowLayout.LEFT,10,20));这句话只是指明了一个布局,却没把布局放到控件上。应把此布局放到frame上,改为frame.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式