package Textarea;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JTextPane;
public class flag extends JFrame implements ActionListener{
private boolean landing=false; //标志登陆否

private JTextPane textarea=new JTextPane();
private JPanel panel1=new JPanel();

private JMenuBar bar=new JMenuBar(); //工具条

private JMenu fileMenu=new JMenu("File");
private JMenu editMenu=new JMenu("Edit");
private JMenu quitMenu=new JMenu("Quit");
private JMenu landMenu=new JMenu("Land");

private JMenuItem open=new JMenuItem("open");
private JMenuItem quit=new JMenuItem("quit");
private JMenuItem land=new JMenuItem("land");

private JDialog lander=new JDialog();      //新建登陆对话框
private JLabel lableName=new JLabel("name:"); 
private JLabel lablePwd=new JLabel("password:");   
private JTextField txname=new JTextField();    //文本区域
private JPasswordField txpsd=new JPasswordField();    //密码区域
private JButton over=new JButton("ok");

public flag()
{
setTitle("文本编辑器");

add(textarea);

setJMenuBar(bar); //设置菜单
bar.add(fileMenu);
bar.add(quitMenu);
bar.add(editMenu);
bar.add(landMenu);
fileMenu.add(open);
quitMenu.add(quit);
landMenu.add(land);





//设置登陆框样式

panel1.setLayout(new GridLayout(2,1)); //登陆框
lander.setTitle("lander");
lander.setLocation(400,350);
lander.setSize(200,100);
panel1.add(lableName);
panel1.add(txname);
panel1.add(lablePwd);
panel1.add(txpsd);
lander.add("north",panel1);
lander.add("south",over);



setLocation(400,300); //设置主框位置
setSize(400,200); 
setVisible(true);

open.addActionListener(this); //单击监听
quit.addActionListener(this);
land.addActionListener(this);
over.addActionListener(this);

} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

if(e.getSource()==open)
{
if(!landing)
{
JOptionPane.showMessageDialog(null,"NO landing","error",JOptionPane.ERROR_MESSAGE);
}
}
if(e.getSource()==quit)
{
if(!landing)
{
JOptionPane.showMessageDialog(null,"NO landing","error",JOptionPane.ERROR_MESSAGE);
}
}
if(e.getSource()==land)
{
lander.setVisible(true);
if(txname.getText().equals("001")&&txpsd.getText().equals("001"))
{
landing=true;
}
if(e.getSource()==over)
System.exit(0);

}

}

public static void main(String[] args)
{
new flag();
}
}刚把书上的布局看完,自己随意写的...帮忙解决下 谢谢了
1.登陆框的ok按钮的位置怎么设..我用嵌套布局 就是Border +Grid 就错了,纯粹用Grid(3,1)的话 可以 但OK 位置在左边
2.if(e.getSource()==over)
System.exit(0);   这个貌似获取不了,不知道为什么
3.对话框应该怎么做啊,我这貌似太麻烦了...JOPtionPane 那个 不怎么会,书上讲太少了,而且貌似只能验证一个值???..不懂
我就想把帐户 密码输入 传回去 landing=true...谢谢了,这是不到10次的脱离书本写JAVA 程序,可能有点乱,以前都是抄袭书上代码的,现在第2本课本快看完了,想自己找点例子慢慢学

解决方案 »

  1.   

    1.登陆框的ok按钮的位置怎么设..我用嵌套布局 就是Border +Grid 就错了,纯粹用Grid(3,1)的话 可以 但OK 位置在左边 
            setLayout(null);//可视化的时候,自己想怎么摆就这么摆(初学使用borland jbuilder 2006吧)
    2.if(e.getSource()==over) 
    System.exit(0);  这个貌似获取不了,不知道为什么 
       e.getSource()的返回值是?
    3.对话框应该怎么做啊,我这貌似太麻烦了...JOPtionPane 那个 不怎么会,书上讲太少了,而且貌似只能验证一个值???..不懂 
    我就想把帐户 密码输入 传回去 landing=true...    对话框:
       import javax.swing.JOptionPane;
       <以下内容摘自JDK>
       showConfirmDialog 询问一个确认问题,如 yes/no/cancel。 
       showInputDialog 提示要求某些输入。 
       showMessageDialog 告知用户某事已发生。 
        showOptionDialog 上述三项的大统一 (Grand Unification)。     <示例>
       showConfirmDialog(Component parentComponent, Object message) 
              调出带有选项 Yes、No 和 Cancel 的对话框;标题为 Select an Option。
         showInputDialog(Component parentComponent, Object message)
         .....以下依此类推,JDK都有原样的代码,如果问题中上述代码为LZ手写的话。那么看明白相关JDK应该不是难事
      

  2.   

    1.我知道可以 setLayout 用坐标定位..但那有些不入流吧..我就想学布局,不需要去寻找替代方法,我并不是想完成这个程序,而是想学方法
    2.我想获取 点击 ok 后 跳出
    3.JOPtionPane JDK我看了,但还是不明白...有个showInputDialog 但貌似只有一个空输入 我也不大清楚怎么检测
    package Textarea;
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    import javax.swing.JTextPane;
    public class flag extends JFrame implements ActionListener{
    private boolean landing=false; //标志登陆否

    private JTextPane textarea=new JTextPane();
    private JPanel panel1=new JPanel();

    private JMenuBar bar=new JMenuBar(); //工具条

    private JMenu fileMenu=new JMenu("File");
    private JMenu editMenu=new JMenu("Edit");
    private JMenu quitMenu=new JMenu("Quit");
    private JMenu landMenu=new JMenu("Land");

    private JMenuItem open=new JMenuItem("open");
    private JMenuItem quit=new JMenuItem("quit");
    private JMenuItem land=new JMenuItem("land");

    private JDialog lander=new JDialog();      //新建登陆对话框
    private JLabel lableName=new JLabel("name:"); 
    private JLabel lablePwd=new JLabel("password:");   
    private JTextField txname=new JTextField();    //文本区域
    private JPasswordField txpsd=new JPasswordField();    //密码区域
    private JButton over=new JButton("ok");

    public flag()
    {
    setTitle("文本编辑器");

    add(textarea);

    setJMenuBar(bar); //设置菜单
    bar.add(fileMenu);
    bar.add(quitMenu);
    bar.add(editMenu);
    bar.add(landMenu);
    fileMenu.add(open);
    quitMenu.add(quit);
    landMenu.add(land);





    //设置登陆框样式

    lander.setLayout(new GridLayout(3,1)); //登陆框
    lander.setTitle("lander");
    lander.setLocation(400,350);
    lander.setSize(200,100);
    lander.add(lableName);
    lander.add(txname);
    lander.add(lablePwd);
    lander.add(txpsd);
    //lander.add("north",panel1);
    lander.add(over);



    setLocation(400,300); //设置主框位置
    setSize(400,200); 
    setVisible(true);

    open.addActionListener(this); //单击监听
    quit.addActionListener(this);
    land.addActionListener(this);
    over.addActionListener(this);

    } @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub

    if(e.getSource()==open)
    {
    if(!landing)
    {
    JOptionPane.showMessageDialog(null,"NO landing","error",JOptionPane.ERROR_MESSAGE);
    }
    }
    if(e.getSource()==quit)
    {
    if(!landing)
    {
    JOptionPane.showMessageDialog(null,"NO landing","error",JOptionPane.ERROR_MESSAGE);
    }
    }
    if(e.getSource()==land)
    {
    lander.setVisible(true);
    if(txname.getText().equals("001")&&txpsd.getText().equals("001"))
    {
    landing=true;
    }
    if(e.getSource()==over)
    System.exit(0);

    }

    }

    public static void main(String[] args)
    {
    new flag();
    }
    }
    这个可以运行,在land 里 刚做,想自己做个文本编辑框 慢慢往里面加内容,就是想巩固自己学的东西...刚开始做密码检测就卡住了,望大家解决...
      

  3.   

    import java.awt.BorderLayout; 
    import java.awt.FlowLayout; 
    import java.awt.GridLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; import javax.swing.JButton; 
    import javax.swing.JDialog; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JMenu; 
    import javax.swing.JMenuBar; 
    import javax.swing.JMenuItem; 
    import javax.swing.JOptionPane; 
    import javax.swing.JPanel; 
    import javax.swing.JPasswordField; 
    import javax.swing.JTextField; 
    import javax.swing.JTextPane;
     
    这样写太麻烦import java.awt.*;
    import javax.swing.*;
      

  4.   

    swing这方面一直没有加强,要引起足够的重视了。
      

  5.   

    好久没有做swing了。
    帮不了你。
      

  6.   

    ......自己顶,JAVA学了1个月了..高手帮下忙吧...就是想实现下 密码 检测...你们一运行就大概知道我想干什么了...还有做界面一般都用什么啊?刚学 不清楚...不是swing?
      

  7.   

    好久不做Swing了,下次再来看有没有高手解答!
      

  8.   

    虽然swing必awt稍微美观点,但总的来说java还是不擅长界面的处理。
    好久没做swing开发了
      

  9.   

    if(e.getSource()==land)
    {
    lander.setVisible(true);
    if(txname.getText().equals("001")&&txpsd.getText().equals("001"))
    {
    landing=true;
    }
    }
    if(e.getSource()==over)
    lander.setVisible(false);

    改成这样可以运行ok了,但landing=true 貌似不立刻传送,有没刷新什么的命令啊,现在必须要在进一次登陆才行
      

  10.   

    首先,楼主初学,很重要的是格式,你这代码很难读。
    再说你的问题,布局可以借用Panel 这个看看API就明白了
      

  11.   

    代码乱是因为没用格式复制....
                 没注意有那功能package Textarea;import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.JTextPane;public class flag extends JFrame implements ActionListener {
    private boolean landing = true; // 标志登陆否
    private JTextPane textarea = new JTextPane();
    private JPanel panel1 = new JPanel(); private JFileChooser filechooser = new JFileChooser(); private JMenuBar bar = new JMenuBar(); // 工具条 private JMenu fileMenu = new JMenu("File");
    private JMenu editMenu = new JMenu("Edit");
    private JMenu quitMenu = new JMenu("Quit");
    private JMenu landMenu = new JMenu("Land"); private JMenuItem open = new JMenuItem("open");
    private JMenuItem quit = new JMenuItem("quit");
    private JMenuItem land = new JMenuItem("land"); private JDialog lander = new JDialog(); // 新建登陆对话框
    private JLabel lableName = new JLabel("name:");
    private JLabel lablePwd = new JLabel("password:");
    private JTextField txname = new JTextField(); // 文本区域
    private JPasswordField txpsd = new JPasswordField(); // 密码区域
    private JButton over = new JButton("ok"); public flag() {
    setTitle("文本编辑器");
    // ImageIcon image=new ImageIcon("a.bmp");
    // JLabel label=new JLabel(image);
    // JScrollPane jscroll=new JScrollPane(label); // add(jscroll);
    add(textarea);
    setJMenuBar(bar); // 设置菜单
    bar.add(fileMenu);
    bar.add(quitMenu);
    bar.add(editMenu);
    bar.add(landMenu);
    fileMenu.add(open);
    quitMenu.add(quit);
    landMenu.add(land); // 设置登陆框样式 lander.setLayout(new GridLayout(3, 1)); // 登陆框
    lander.setTitle("lander");
    lander.setLocation(400, 350);
    lander.setSize(200, 100);
    lander.add(lableName);
    lander.add(txname);
    lander.add(lablePwd);
    lander.add(txpsd);
    // lander.add("north",panel1);
    lander.add(over); setLocation(400, 300); // 设置主框位置
    setSize(400, 200);
    setVisible(true); open.addActionListener(this); // 单击监听
    quit.addActionListener(this);
    land.addActionListener(this);
    over.addActionListener(this); } @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub if (e.getSource() == open) {
    if (!landing) {
    JOptionPane.showMessageDialog(null, "NO landing", "error",
    JOptionPane.ERROR_MESSAGE);
    } else {
    int i = filechooser.showOpenDialog(this);
    if (i == JFileChooser.APPROVE_OPTION) {
    File f = filechooser.getSelectedFile();
    try {
    InputStream is = new FileInputStream(f);
    textarea.read(is, "d"); 
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    } }
    if (e.getSource() == quit) {
    if (!landing) {
    JOptionPane.showMessageDialog(null, "NO landing", "error",
    JOptionPane.ERROR_MESSAGE);
    } else
    System.exit(0);
    }
    if (e.getSource() == land) {
    lander.setVisible(true);
    if (txname.getText().equals("001") && txpsd.getText().equals("001")) {
    landing = true;
    }
    }
    if (e.getSource() == over)
    lander.setVisible(false); } public static void main(String[] args) {
    new flag();
    }
    }
    加问题了,熟悉的告诉下,都是基本功能..
    // ImageIcon image=new ImageIcon("a.bmp");
    // JLabel label=new JLabel(image);
    // JScrollPane jscroll=new JScrollPane(label); // add(jscroll);
    图片不是这样插入吗?怎么不显示 ..注意我是把textarea 屏蔽的情况下测试的插入图片
      

  12.   

    i = filechooser.showOpenDialog(this)
    以下是JDK returnthe return state of the file chooser on popdown: 
    JFileChooser.CANCEL_OPTION 
    JFileChooser.APPROVE_OPTION 
    JFileChooser.ERROR_OPTIONif (i == JFileChooser.APPROVE_OPTION)以下是JDK
    Return value if approve (yes, ok) is chosen. 不懂,我试了下 改成0 也成立 不过点取消也成立了...
    if (0 == JFileChooser.APPROVE_OPTION)谁能解说下这个啊,真的看不懂有些JDK
      

  13.   

    睡了,明天中午来看 谢谢大家了..图片问题暂时解决了..
    ImageIcon image = new ImageIcon("E:\\java\\h\\src\\Textarea\\ha.JPG");
    label.setIcon(image);
    JScrollPane jscroll = new JScrollPane(label);
    add(jscroll);但不知道为什么不能用相对路径..还有如果想让这个图片当背景有什么办法吗??..先谢过了