Swing中组件第一次显示不能对齐的问题

SinjinSong 2016-05-06 10:16:05
请问为什么第一次启动时会下方的两个文本框不能对齐呢
要重新刷新一次才会显示正常
使用的是空的布局管理器,组件的位置都是手动设置的
谢谢~~



...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SinjinSong 2016-05-07
  • 打赏
  • 举报
回复
额已解决了....
SinjinSong 2016-05-07
  • 打赏
  • 举报
回复
不好意思...忘上代码了...
SinjinSong 2016-05-07
  • 打赏
  • 举报
回复

public class MainFrame extends JFrame implements ActionListener {
	
	
	private JMenuBar jmb;
	private JMenu file,edit,run,user;
	private JMenuItem fileNew,fileOpen,fileSave,fileExit;
	private JMenuItem editRedo,editUndo;
	private JMenuItem execute;
	private JMenuItem login;
	private JMenuItem logout;
	private JPanel jpWest;
	private JTextField jtfInput;
	private JLabel jlOutput;
	private JTextArea ta;
	private PaintFrame welcome;
	
	private String  currentFileName;
	private String currentUserName;
	
	private JLabel jlUserName;
	private JLabel jlFileName;
	private JLabel jlTime;
	private Timer timer;
	
	public MainFrame(String username) {
		this.currentUserName = username;
		this.setTitle("BF CodeRunner");
		this.setLayout(null);
		//定义菜单栏组件
		jmb = new JMenuBar();
		file = new JMenu("File");
		file.setFont(MyFont.f4);
		edit = new JMenu("Edit");
		edit.setFont(MyFont.f4);
		run = new JMenu("Run");
		run.setFont(MyFont.f4);
		user = new JMenu("System");
		user.setFont(MyFont.f4);
		
		//定义条目
		fileNew = new JMenuItem("New");
		fileNew.setActionCommand("newFile");
		fileNew.addActionListener(this);
		
		fileOpen = new JMenuItem("Open");
		fileOpen.setActionCommand("openFile");
		fileOpen.addActionListener(this);
		fileSave = new JMenuItem("Save");
		fileSave.setActionCommand("saveFile");
		fileSave.addActionListener(this);
		fileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
		file.addSeparator();
		
		fileExit = new JMenuItem("Exit");
		fileExit.setActionCommand("exit");
		fileExit.addActionListener(this);
		file.add(fileNew);file.add(fileOpen);file.add(fileSave);file.add(fileExit);
		jmb.add(file);
		
		editRedo = new JMenuItem("Redo");
		editRedo.setActionCommand("redo");
		editRedo.addActionListener(this);
		editUndo = new JMenuItem("Undo");
		editUndo.setActionCommand("undo");
		editUndo.addActionListener(this);
		edit.add(editRedo);edit.add(editUndo);
		jmb.add(edit);
		
		execute = new JMenuItem("Execute");
		execute.setActionCommand("execute");
		execute.addActionListener(this);
		run.add(execute);
		jmb.add(run);
		
		login = new JMenuItem("Login");
		login.setActionCommand("login");
		login.addActionListener(this);
		logout = new JMenuItem("Logout");
		logout.setActionCommand("logout");
		logout.addActionListener(this);
		user.add(login);
		user.add(logout);
		jmb.add(user);
		this.setJMenuBar(jmb);
		
		//定义中部的代码区
		//启动时如果没有newFile,那么显示欢迎画面
		
		//设置两个组件的位置,大小一致,就可以实现一个组件对另外一个组件的覆盖
		//说明:先加入的组件,会显示在最上面,后加入的组件,会在底层。
		
//		welcome = new PaintFrame("",200,0,600,400);
		jlUserName = new JLabel("User:"+this.currentUserName);
		jlUserName.setBounds(200,0,200,30);
		jlFileName = new JLabel();
		jlFileName.setBounds(400, 0, 200, 30);
		jlTime = new JLabel();
		jlTime.setBounds(600,0,200,30);
		timer = new Timer(1000, new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				jlTime.setText("Time:"+new SimpleDateFormat("yyyy-MM-dd- kk:mm:ss").format(System.currentTimeMillis()));
			}
		});
		timer.start();  
		
		ta = new JTextArea();
		ta.setBounds(200,30,600, 400);
		ta.setMargin(new Insets(10, 10, 10, 10));
		ta.setBackground(Color.LIGHT_GRAY);
		this.add(jlUserName);
		this.add(jlFileName);
		this.add(jlTime);
		this.add(ta);
		
		//定义南部的输入输出区
		jtfInput = new JTextField();
		jtfInput.setBounds(200, 400, 300, 200);
		
		jlOutput = new JLabel();
		jlOutput.setBounds(500, 400, 300, 200);
		this.add(jtfInput);
		this.add(jlOutput);
		
		
		//定义西侧的版本树
		jpWest = new JPanel();
		jpWest.setBounds(0,0,200, 600);
		jpWest.setBackground(Color.cyan);
		this.add(jpWest);
		
		
		//定义JFrame的属性
		this.setResizable(false);
		this.setIconImage(Toolkit.getDefaultToolkit().getImage("2.png"));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(800, 600);
		this.setLocation(400, 200);
		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		try{
			switch(cmd){
				case "newFile":System.out.println("newFile");
							   this.currentFileName= JOptionPane.showInputDialog(this, "FileName:");
							   jlFileName.setText("FileName: "+currentFileName);
							   ta.setText("");
							   break;
				case "openFile":System.out.println("openFile");break;
				case "saveFile":System.out.println("saveFile");
								RemoteHelper.getInstance().getIOService().writeFile(ta.getText(),currentUserName, currentFileName);
								break;
				case "exit":this.dispose();break;
				case "redo":System.out.println("redo");break;
				case "undo":System.out.println("undo");break;
				case "execute":
								
								System.out.println("execute");
								break;
				case "login":System.out.println("login");break;
				case "logout":System.out.println("login");break;
			}
		}catch (RemoteException e1) {
			e1.printStackTrace();
		}
	}
	
	public void showMsg(String msg){
		switch(msg){
			case "saveFail":JOptionPane.showMessageDialog(this,"Save File Error! Please try again.");
		}
	}
}
三仙半 2016-05-06
  • 打赏
  • 举报
回复
不把代码发出来,就这么猜谜,能解决的了吗?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧