空的字符串是””,不带空格
outputstream 在打印时,打印的内容后面不要加n,否则对方接受和判断不正确
g:projectionic2n1c2njava>javac jsubnetframe.java
jsubnetframe.java:22: jsubnetframe should be declared abstract; it does not defi
ne valuechanged(javax.swing.event.listselectionevent) in jsubnetframe
public class jsubnetframe extends jframe implements listselectionlistener {
^
jsubnetframe.java:68: cannot resolve symbol
symbol : class tablemodel
location: class jsubnetframe
tablemodel datamodel = new abstracttablemodel() {
^
jsubnetframe.java:68: cannot resolve symbol
symbol : class abstracttablemodel
location: class jsubnetframe
tablemodel datamodel = new abstracttablemodel() {
^
jsubnetframe.java:89: addactionlistener(java.awt.event.actionlistener) in javax.
swing.abstractbutton cannot be applied to (jsubnetframe)
cancelb.addactionlistener(this);
^
note: jsubnetframe.java uses or overrides a deprecated api.
note: recompile with -deprecation for details.
4 errors
原因是没有import javax.swing.table.*;
g:projectionic2n1c2njava>javac jhpportframe.java
jhpportframe.java:27: jhpportframe should be declared abstract; it does not defi
ne mousepressed(java.awt.event.mouseevent) in jhpportframe
public class jhpportframe extends jframe implements
^
note: jhpportframe.java uses or overrides a deprecated api.
note: recompile with -deprecation for details.
1 error
jhpportframe should be declared abstract; it does not defi 原因是因为在这里必须用mouselistener 的相关方法进行覆盖,也就是说必须加入如下的方法:
public void mousepressed(mouseevent evt) {//if (audio != null) audio.play();}
public void mouseentered (mouseevent me) {}
public void mouseexited (mouseevent me) {}
public void mousereleased(mouseevent me) {}
鼠标左键和右件的事件获取:
public void mousepressed(mouseevent evt) {
point point1=evt.getpoint();
int x,y;
int onmask = evt.button1_down_mask;//左键的id号
if ((evt.getmodifiersex() & onmask ) == onmask) // 点击左键时
{
}
else //点击右键时
抽象类,不能进行初始化或者生成实例
hpportimg=new image(getdocumentbase(),”aaa.gif”);
这句话是错的,因为image()是抽象类,不能进行初始化或者生成实例.,应该用:
hpportimg=getimage(“adf.gif”);
并且应该注意它不能放在构造函数中,而应该放在init()等方法中.
各种动作和事件的处理:
监视键盘的动作,用usertf.addkeylistener(this);它的接口软件包是keylistener,应该import java.awt.event.*; 必须重载的接口函数是
public void keypressed(keyevent e){}
public void keyreleased(keyevent e){}
public void keytyped(keyevent e){}
监视焦点的动作,用usertf.add focuslistener (this);它的接口软件包是focuslistener应该import java.awt.event.*; 必须重载的接口函数是
public void focuslost(focusevent e) { }
public void focusgained(focusevent e) {}
监视鼠标的动作,用usertf.addmouselistener(this);它的接口软件包是mouseylistener,应该import java.awt.event.*;
//必须增加mouselistener(this) 或component. mouselistener(this)
必须重载的接口函数是
public void mouseclicked(mouseevent e){ }
public void mousepressed(mouseevent evt) {}
public void mouseentered (mouseevent me) {}
public void mouseexited (mouseevent me) {}
public void mousereleased(mouseevent me) {}
监视鼠标移动的动作,用usertf.addmouselistener(this);它的接口软件包是mouseymotionlistener,应该import java.awt.event.*; 必须重载的接口函数是
public void mousemoved(mouseevent e){}
public void mousedragged(mouseevent e){ }
以上各种事件必须在组件上增加相应的侦听,如
user.addkeylistener(this);
pass.addkeylistener(this);
user.addfocuslistener(this);
pass.addfocuslistener(this);
按钮事件的执行在java2中应该用下列函数,无须重载:
public void actionperformed(actionevent ae) {
jbutton source=(jbutton)ae.getsource();
if(source==okb)
{ slkdfjalskdjflaksdjlfjads;flkjasld;kjfl;kasjdfl;k}
焦点事件:focuslost(),focusgain()
transferfocus()是将焦点传递到下一个组件
requestfocus()是将焦点传递到指定的组件,
if(e.getcomponent()==user) user.transferfocus();
else if(e.getcomponent()==pass) pass.transferfocus();
else if(e.getcomponent()==ok) ok.transferfocus();
经过观察发现,焦点可以在文本框上传递,但是在按钮上好象没法传递.
在表格中
subnettable.reshape(0,0,300,200); //一定要,用以刷新屏幕
jtable中的每一行可否设置不同的背景颜色???
可以的,使用自己的tablecellrenderer从tablemodel中的value获取颜色值.
请参见:
http://www2.gol.com/users/tame/swing/examples/
有关玻璃层:
1、 glasspane不能设置大小,它将布满整个工作区, //jtv.reshape(300,300,300,200); 没用
2、 先建立一个jcomponent 的组件,jtv=new jtopview(jlp);其中jlp是新建母窗口的jlayeredpane
3、 将这个组建用setglasspane(jtv)方法设置
4、 如果要求它透明,这一句不能少jtv.setopaque(false);
5、 这一句是显示的,也不能少jtv.setvisible(true);
6、 玻璃层下面层的组建获取动作用redispatchmouseevent(mouseevent me)
这段代码是我在英文网址上拿下来修改的,同时参照了<<精通java2>>p437页
public void redispatchmouseevent(mouseevent me,boolean repaint)
{
//能够直接取到的组件,用广义的component 就可以了
point point=me.getpoint();
int eventid = me.getid();
component component=jlp.getcomponentat(point);
point componentpoint = swingutilities.convertpoint(
jlp,
point,
component);
boolean componentbool=component.contains(componentpoint );
if(componentbool){
//system.out.println("7777777777777777" component);
component.dispatchevent(new mouseevent(component,eventid,me.getwhen(),me.getmodifiers(),
componentpoint.x,componentpoint.y,me.getclickcount(),me.ispopuptrigger()));
}
////不能够直接取到的组件,用具体的组件名字
point alarmtablepoint = swingutilities.convertpoint(
jlp,
point,
alarmtable);
boolean alarmtablebool= alarmtable.contains(alarmtablepoint );
if (alarmtablebool ) {
alarmtable.dispatchevent(new mouseevent(alarmtable,eventid,me.getwhen(),
me.getmodifiers(),
alarmtablepoint.x,
alarmtablepoint.y,
me.getclickcount(),
me.ispopuptrigger()));
}
}
闽公网安备 35060202000074号