黑马程序员技术交流社区

标题: 记事本创建,问题.....急 [打印本页]

作者: smile_joe    时间: 2013-4-28 14:00
标题: 记事本创建,问题.....急
本帖最后由 smile_joe 于 2013-4-29 00:39 编辑

创建一个类调用 创建记事本,便于设置和修改
package cn.joe.Gui;

public class Demo {
        public static void main(String[] args) {
                new Notepad();
        }
}
记事本创建
package cn.joe.Gui;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.table.TableColumn;

public class Notepad extends Frame {
        private static final long serialVersionUID = 1L;

        MenuItem mi3;

        public Notepad() {
                // super("记事本");
                initNotepad();
                // 创建菜单栏
                getMenuBar1();
                // 添加文本域
                addArea();
//                添加监听器
                listenerAll();
                setVisible(true);
        }


        private void addArea() {
                TextArea ta = new TextArea();
                ta.setFont(new Font("Courier New", Font.PLAIN, 15));
                add(ta);
        }


        private void getMenuBar1() {
                MenuBar menu = new MenuBar();
                // 创建菜单,并添加到菜单栏
                Menu m1 = new Menu("文件(F)");
                Menu m2 = new Menu("编辑(E)");
                Menu m3 = new Menu("查看(S)");

                // 创建菜单项并给菜单上添加功能
                MenuItem mi1 = new MenuItem("打开");
                MenuItem mi2 = new MenuItem("保存");
                mi3 = new MenuItem("退出");
                MenuItem mi4 = new MenuItem("GBK");
                MenuItem mi5 = new MenuItem("UTF-8");

                m1.add(mi1);
                m1.add(mi2);
                m1.add(mi3);
                m3.add(mi4);
                m3.add(mi5);

                menu.add(m1);
                menu.add(m2);
                menu.add(m3);
                // 添加菜单栏到窗体
                setMenuBar(menu);
        }

        // 创建构造Notepad函数,实现Notepad实例化样式
        private void initNotepad() {
                setTitle("记事本");
                setSize(666, 666);
                setLocation(111, 99);
                setLayout(new FlowLayout());
                addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                                System.exit(0);
                        }
                });
        }
        private void listenerAll() {
                mi3.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                System.exit(0);
                        }
                });
        }
}

为什么我添加了文本域后,在窗体中不是全屏,显示的样式: 窗体中的一块位置,怎么弄成与窗体的大小显示?
作者: smile_joe    时间: 2013-4-28 14:14
本帖最后由 smile_joe 于 2013-4-28 14:19 编辑

这个好像是流布局--问题,我看到流布局会对窗体中的组件有默认的位置和大小,
1.但是找不到这默认是多少,有知道请帮我详细说下.......!感谢...
2.还有既然是默认自然的,那是应该可以去调整,我同样找不到方法,有知道的技术牛请说下...
3.去掉布局,就全屏显现,在没有布局的情况下,窗体又是怎么去布局的?

我做了些试验,第3个问题---我添加1个组件,全屏显示,添加第二个组件,直接覆盖了第一个,第二个全屏显示.....累计覆盖,
请问这里的覆盖--是直接替换了上一个? 还是 在窗体上下一个盖住了上一个?
作者: 孙胜    时间: 2013-4-28 14:52
这段代码setLayout(new FlowLayout());改一下,
窗体的默认布局为 BorderLayout,去掉布局或者显示的设置setLayout(new BorderLayout())
作者: smile_joe    时间: 2013-4-28 15:04
孙胜 发表于 2013-4-28 14:52
这段代码setLayout(new FlowLayout());改一下,
窗体的默认布局为 BorderLayout,去掉布局或者显示的设置se ...

对是解决了当期的问题,
但是添加多个组件,好像也是覆盖掉了?
作者: smile_joe    时间: 2013-4-28 15:04
孙胜 发表于 2013-4-28 14:52
这段代码setLayout(new FlowLayout());改一下,
窗体的默认布局为 BorderLayout,去掉布局或者显示的设置se ...

谢谢你啊
作者: 孙胜    时间: 2013-4-28 15:06
smile_joe 发表于 2013-4-28 15:04
谢谢你啊

边框布局就是覆盖模式,显示的是你最后一个添加的组件
作者: smile_joe    时间: 2013-4-28 15:08
孙胜 发表于 2013-4-28 15:06
边框布局就是覆盖模式,显示的是你最后一个添加的组件

上一个就丢失了,被替换了?
作者: smile_joe    时间: 2013-4-28 15:08
孙胜 发表于 2013-4-28 15:06
边框布局就是覆盖模式,显示的是你最后一个添加的组件

上一个就丢失了,被替换了?
作者: 孙胜    时间: 2013-4-28 15:20
Frame f= new Frame("窗口标题");

TextArea ta = new TextArea();

Button b = new Button("我是一个大大的按钮");

f.add(ta);
f.add(b);
最后显示的就是一个大大的按钮,文本域被覆盖了
作者: smile_joe    时间: 2013-4-28 15:30
孙胜 发表于 2013-4-28 15:20
Frame f= new Frame("窗口标题");

TextArea ta = new TextArea();

ok,你的耐心 非常感谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2