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);
}
} 展开
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);
}
} 展开
4个回答
展开全部
在setLayout前加上实例名frame,
把extends JFrame 去掉 //根本没有用到
使用了布局管理器,把setSize替换成 pack();
把extends JFrame 去掉 //根本没有用到
使用了布局管理器,把setSize替换成 pack();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
}
改成
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();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setLayout(new FlowLayout(FlowLayout.LEFT,10,20));这句话只是指明了一个布局,却没把布局放到控件上。应把此布局放到frame上,改为frame.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询