如何在java中建立frame
2个回答
展开全部
一般而言可以用两种方法实现。
第一种
import javax.swing.*;
public class FrameDemo1 {
public static void main(String[] args) {
//创建一个JFrame对象
JFrame jf = new JFrame();
//设置窗口的标题栏
jf.setTitle("窗口一");
//创建一个标签组件
JLabel jl = new JLabel("窗口里的标签组件");
//把标签组件添加到窗口界面
jf.add(jl);
//设置窗口的位置
jf.setLocation(200,120);
//设置窗口的大小
jf.setSize(300, 280);
//设置窗口的可见性
jf.setVisible(true);
}
}
第二种方法
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//写一个类去继承JFrame
public class FrameDemo2 extends JFrame{
//定义组件
JLabel jl;
JButton jb;
public FrameDemo2() {
//初始化组件
jl = new JLabel("窗口里的标签组件");
jb = new JButton("窗口里的按钮");
//给按钮添加事件响应,点击按钮改变标签组件上的文字的颜色
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jl.setForeground(Color.RED);
}
});
//设置窗口的布局,为边界布局
this.setLayout(new BorderLayout());
//添加组件到指定的位置
this.add(jl,BorderLayout.CENTER);
this.add(jb,BorderLayout.SOUTH);
//窗口的this.setLocation(120,100) 和this.setSize(300,280)的整合写法setBounds(....);
this.setBounds(120, 100, 300, 280);
//设置点击窗口的关闭按钮执行的默认操作,关闭程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//设置窗口的标题栏
this.setTitle("窗口二");
//窗口默认是不可见的,所以需要设置窗口的可见性为true
this.setVisible(true);
}
public static void main(String[] args) {
new FrameDemo2();
}
}
展开全部
答:记得存档时扩展名要加上.java,文件类型改成:“所有的文件(*.*)”。 2. 问:到底 Java 是如何传递参数的?是by value或by reference? 答:All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。 3. 问:String这个类型的class为何定义成final? 答: 主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。 4. 问:finalizers和C++ 的 destructors有何差异? 答:Java内部具有“内存使用回收” 的机制, 虽然它也提供了类似 (C++ 的) destructors的 finalize(),每个对象都可以使用这个方法 method,但必须冒著破坏原先回收机制的危险。所以建议尽量避免使用finalize(),不妨考虑多使用 null 及 dispose() 来释出资源会好一些。 5. 问:继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢? 答:记住每当您定义了一个 class的constructor,除非您一开始就去call 这个constructor,否则 Java 会自动引入superclass原先不含参数的 constructor, 如果superclass的 constructor都是有参数的,那么问题中的错误提示便出现了。 解决的方法很简单, 找一找 API文件,加上正确的参数就得了。 6. 问:怎样让char类型的东西转换成int类型? 答: char c = 'A'; int i = c; //反过来只要作强制类型转换就行了 c = (char) I; 7. 问:我的applet原先好好的, 一放到web server就会有问题,为什么? 答:一般来说,从以下方向试试: 确定class文件的格式没错——已经编译过,也没有损坏的情形; 确定所有用到的class文件放到web server上,少一个都不行; 确定所有的文件名和class名称一致,特别检查大小写有无差错; 如果程序中用到package,web server上的目录就要当心了。譬如您在class中宣告了一个叫COM.foo.util的package,那么web server的applet codebase目录底下就非得有 COM/foo/util这个子目录不可。(注意目录名称也有大小写之分); web server上的文件档案应该事先设定好。(尤其是search,read和execute权限) 8. 问:怎样在 Applet中用某个图形涂满整个背景? 答:在背景建立 Panel 或 Canvas, 然後用图形填满它。 9. 问:怎样在 Applet 中建立自己的菜单(MenuBar/Menu)? 答:首先在Applet的init() 方法中建立Frame instance, 然后将Menus, Menubar都加上去即可。 (setMenuBar() 是 Frame下的方法)或者,找到Applet上层的Frame后依法炮制。 Container parent = getParent(); while (! (parent instanceof Frame) ) parent = parent.getParent(); Frame theFrame = (Frame) parent; 注意:第二个方法在Mac或某些browsers上并不可行。 如果您使用的是JDK 1.1,也可以考虑使用popup menu,这样就不必理会Frame的问题了。 10. 怎样比较两个类型为String的字符串? 答:在两个对象之间使用 ==,会将“两个对象是否有同一reference”的结果传回。也就是说, 这等同于“两个对象是否拥有同一地址 (address)”,或者“两个对象物件是否为同一对象”。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询