窗口重绘的问题,急 我做了一个窗口,有一个文本框和一个按纽,如果文本框中不输入任何东西就点击按纽,就会弹出一个对话框提示需要输入信息,关掉对话框后原来窗口被对话框覆盖的地方就没有了,为什么自己不重绘呢?怎样解决才能使得对话框关闭后自动重绘呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【wangydong】截止到2008-07-24 10:25:20的历史汇总数据(不包括此帖):发帖的总数量:3 发帖的总分数:50 每贴平均分数:16 回帖的总数量:52 得分贴总数量:12 回帖的得分率:23% 结贴的总数量:3 结贴的总分数:50 无满意结贴数:0 无满意结贴分:0 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:0.00 % 无满意结分率:0.00 % 敬礼! 什么意思啊,我是初学GUI啊,说的明白点好吗? package gw.drawer;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class Test1 extends JFrame{ private static final long serialVersionUID = -4763203420993364680L; JPanel p = (JPanel)this.getContentPane(); JTextField f = new JTextField(10); JButton b = new JButton("确定"); static Test1 t; public static void main(String [] args) { t = new Test1(); } public Test1() { p.setLayout(null); p.setBackground(Color.cyan); f.setBounds(10, 10, 80, 20); b.setBounds(10, 40, 60, 20); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (f.getText().length() == 0) { JOptionPane.showMessageDialog(t, "请输入信息"); } else { JOptionPane.showMessageDialog(t, f.getText()); } } }); p.add(f); p.add(b); this.setSize(240, 320); this.setLocation(392, 224); this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); }}没瞧出你说的问题 你覆盖了被遮住窗口的 paint 方法了吗? import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;public class AlterEmployee extends MainFrame { private Frame frame; private JPanel jp; private JPanel jp1; private JPanel jp2; private JPanel jp3; private JLabel label1; private JLabel labelhead; private JLabel labelhead2; private JLabel label21; private JLabel label22; private JLabel label23; private JTextField employeeid; private JTextField employeeid2; private JTextField employeename; private JTextField sdeptid; private JButton btn1; private JButton btn2; private JButton btn3; private JButton btn4; private JButton btn5; public AlterEmployee(Frame frame1) { super(frame1,300,300,400,300); frame = frame1; jp1 = new JPanel(); labelhead =new JLabel("—————————— 请在下面输入信息 ——————————"); jp1.add(labelhead); GridBagLayout gbl1 = new GridBagLayout(); GridBagConstraints gbc1 = new GridBagConstraints(); jp2 = new JPanel(); jp2.setLayout(gbl1); label1 = new JLabel("请输入要修改的员工的ID号:"); gbc1.anchor = GridBagConstraints.WEST; gbc1.gridx=0; gbl1.setConstraints(label1,gbc1); jp2.add(label1); employeeid = new JTextField(10); gbc1.anchor = GridBagConstraints.EAST; gbc1.gridx = 1; gbl1.setConstraints(employeeid,gbc1); jp2.add(employeeid); jp3 = new JPanel(); FlowLayout fLayout=new FlowLayout(FlowLayout.RIGHT); jp3.setLayout(fLayout); btn1 = new JButton("确定"); btn2 = new JButton("关闭"); jp3.add(btn1); jp3.add(btn2); jp = new JPanel(); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); jp.setLayout(gbl); gbc.anchor = GridBagConstraints.CENTER; gbc.weighty = 40; gbl.setConstraints(jp1,gbc); jp.add(jp1); gbc.anchor = GridBagConstraints.CENTER; gbc.weighty = 30; gbc.gridy = 1; gbl.setConstraints(jp2,gbc); jp.add(jp2); gbc.anchor = GridBagConstraints.NORTH; gbc.weighty = 30; gbc.gridy = 2; gbl.setConstraints(jp3,gbc); jp.add(jp3); frame.add(jp); frame.setVisible(true); btn1.addActionListener(new btnActionListener()); btn2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int retval = JOptionPane.showConfirmDialog(frame,"你真的要关闭窗口吗","结束程序",JOptionPane.YES_NO_OPTION); if(retval == JOptionPane.YES_OPTION) frame.dispose(); } }); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { ((Window)e.getComponent()).dispose(); } }); } class btnActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { String id = employeeid.getText(); if(id.length()==0) { JOptionPane.showMessageDialog(frame,"请输入员工号!"); frame.invalidate(); return; } } }}只是部分代码,大家看看是什么问题? 你的AlterEmployee本身已经继承MainFrame,构造函数中的那个Frame是做什么用的?还有,awt组件和Swing组件混合使用? awt组件和Swing组件不要混合试用 自己解决了,把Frame改成是JFrame就没问题了,不会出现上面的情况,但不知道是为什么,高手们谈谈? awt和swing组件好像是采用了不同的机制的,所以混用以后会产生一定的不兼容问题。(隐约记得以前老师上课时这么说过的,是不是这么说的不记得了,但他绝对警告过我们不要混用两种组件,呵呵) 文本框啊?还有按钮都应该是放在一个jpanel里面的吧!如果我简单的写一下吧du extends Jframe implement ActionLister{Jpanel panel=new Jpanel();jtextFiend text=new JtextFied();jbutton button=new jbutton("提交");du(){panel.removeall();panel.add(text);panel.add(button)this.add(panel);this.pack();this.setvisable(true);this.setdefaluFrocl....(Jframe.ex....);}Actionlister(action e)//简写啊?按钮事件{if(e.sourse==button){if(text.gettext().eques(""))//如果是空的话,就调用{ start();}}}start() //实现重绘{panel.removeall();panel.add(new Jlable("aa");panel.add(new Jbutton(""));this.pack();this.repaint();}} 重点就是removeall();然后设置一下大小然后重绘 Swing 对基于对等体的组件使用的术语是重量级(heavyweight),对于模拟的组件使用的术语是轻量级(lightweight)。实际上,Swing 可以支持在一个 GUI 中混合使用重量级组件和轻量级组件,例如在一个 JContainer 中混合使用 AWT 和 Swing 控件,但是如果组件产生了重叠,就必须注意绘制这些控件的顺序。 JOptionPane.showMessageDialog(frame,"请输入员工号!");frame.invalidate();return; 一般不会出现搂主所说的问题,系统会自动检测界面那一部分要重绘,故不用frame.invalidate(); Java aio 怎样处理粘包? java 编写 麻烦各位看下 在做一个类似intellij里的代码编辑器,未完成还在完善 JAVA 精点转换问题求解~~ java activation 是干什么的? 关于private方法重写 有关其它服务与servlet服务相结合的问题。 GridBagLayout不能正常显示 问题在哪 没有异常输出 加载运行Applet的疑问。 请问各位高手Mon Sep 02 02:00:00 CST 2002 怎样转换成2002-9-2 2:00:00啊 FileDialog的一个疑问 JAVA中JList如何设置高度,宽度
楼主【wangydong】截止到2008-07-24 10:25:20的历史汇总数据(不包括此帖):
发帖的总数量:3 发帖的总分数:50 每贴平均分数:16
回帖的总数量:52 得分贴总数量:12 回帖的得分率:23%
结贴的总数量:3 结贴的总分数:50
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Test1 extends JFrame
{
private static final long serialVersionUID = -4763203420993364680L;
JPanel p = (JPanel)this.getContentPane();
JTextField f = new JTextField(10);
JButton b = new JButton("确定");
static Test1 t;
public static void main(String [] args)
{
t = new Test1();
}
public Test1()
{
p.setLayout(null);
p.setBackground(Color.cyan);
f.setBounds(10, 10, 80, 20);
b.setBounds(10, 40, 60, 20);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (f.getText().length() == 0)
{
JOptionPane.showMessageDialog(t, "请输入信息");
}
else
{
JOptionPane.showMessageDialog(t, f.getText());
}
}
});
p.add(f);
p.add(b);
this.setSize(240, 320);
this.setLocation(392, 224);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
}
没瞧出你说的问题
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;
public class AlterEmployee extends MainFrame {
private Frame frame;
private JPanel jp;
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
private JLabel label1;
private JLabel labelhead;
private JLabel labelhead2;
private JLabel label21;
private JLabel label22;
private JLabel label23;
private JTextField employeeid;
private JTextField employeeid2;
private JTextField employeename;
private JTextField sdeptid;
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JButton btn4;
private JButton btn5;
public AlterEmployee(Frame frame1)
{
super(frame1,300,300,400,300);
frame = frame1;
jp1 = new JPanel();
labelhead =new JLabel("—————————— 请在下面输入信息 ——————————");
jp1.add(labelhead);
GridBagLayout gbl1 = new GridBagLayout();
GridBagConstraints gbc1 = new GridBagConstraints();
jp2 = new JPanel();
jp2.setLayout(gbl1);
label1 = new JLabel("请输入要修改的员工的ID号:");
gbc1.anchor = GridBagConstraints.WEST;
gbc1.gridx=0;
gbl1.setConstraints(label1,gbc1);
jp2.add(label1);
employeeid = new JTextField(10);
gbc1.anchor = GridBagConstraints.EAST;
gbc1.gridx = 1;
gbl1.setConstraints(employeeid,gbc1);
jp2.add(employeeid);
jp3 = new JPanel();
FlowLayout fLayout=new FlowLayout(FlowLayout.RIGHT);
jp3.setLayout(fLayout);
btn1 = new JButton("确定");
btn2 = new JButton("关闭");
jp3.add(btn1);
jp3.add(btn2);
jp = new JPanel();
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
jp.setLayout(gbl);
gbc.anchor = GridBagConstraints.CENTER;
gbc.weighty = 40;
gbl.setConstraints(jp1,gbc);
jp.add(jp1);
gbc.anchor = GridBagConstraints.CENTER;
gbc.weighty = 30;
gbc.gridy = 1;
gbl.setConstraints(jp2,gbc);
jp.add(jp2);
gbc.anchor = GridBagConstraints.NORTH;
gbc.weighty = 30;
gbc.gridy = 2;
gbl.setConstraints(jp3,gbc);
jp.add(jp3);
frame.add(jp);
frame.setVisible(true);
btn1.addActionListener(new btnActionListener());
btn2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int retval = JOptionPane.showConfirmDialog(frame,"你真的要关闭窗口吗","结束程序",JOptionPane.YES_NO_OPTION);
if(retval == JOptionPane.YES_OPTION)
frame.dispose();
}
});
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
((Window)e.getComponent()).dispose();
}
});
}
class btnActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String id = employeeid.getText();
if(id.length()==0)
{
JOptionPane.showMessageDialog(frame,"请输入员工号!");
frame.invalidate();
return;
}
}
}
}
只是部分代码,大家看看是什么问题?
如果
我简单的写一下吧
du extends Jframe implement ActionLister
{
Jpanel panel=new Jpanel();
jtextFiend text=new JtextFied();
jbutton button=new jbutton("提交");
du()
{
panel.removeall();
panel.add(text);
panel.add(button)
this.add(panel);
this.pack();
this.setvisable(true);
this.setdefaluFrocl....(Jframe.ex....);
}
Actionlister(action e)//简写啊?按钮事件
{
if(e.sourse==button)
{
if(text.gettext().eques(""))//如果是空的话,就调用
{
start();
}
}
}
start() //实现重绘
{
panel.removeall();
panel.add(new Jlable("aa");
panel.add(new Jbutton(""));
this.pack();
this.repaint();}
}
然后设置一下大小
然后重绘
frame.invalidate();
return; 一般不会出现搂主所说的问题,系统会自动检测界面那一部分要重绘,故不用frame.invalidate();