导航:首页 > 编程语言 > javaswing移动窗口

javaswing移动窗口

发布时间:2024-08-15 14:49:53

1. 用java的swing做界面,想通过在同一个窗口进行面板的切换来达到跳转界面的目的,可行不

答: 可行, 但是不推荐. 的确可以通过隐藏1个JPanel,显示另外1个JPanel 来达到目的, 但是不推荐,因为隐藏的JPanel 还会占用内存等系统资源, 并且可能导致界面布局混乱等问题.

解决办法:

JTabbedPanejtp=newJTabbedPane();
JPaneljp1=newJPanel();
JPaneljp2=newJPanel();
jtp.add("面板1",jp1);
jtp.add("面板2",jp2);

代码

importjava.awt.event.*;
importjavax.swing.*;

{
JTextFieldjtf1;

publicJTFDemo(){
JLabeljl=newJLabel("用户名:");
jtf1=newJTextField(12);
JButtonjb=newJButton("提交");
jb.addActionListener(this);
JPaneljp1=newJPanel();
jp1.add(jl);
jp1.add(jtf1);
jp1.add(jb);
add(jp1);
setTitle("测试Demo");//标题
setSize(280,180);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//窗口点击关闭时,退出程序
setVisible(true);//窗口可见
}

publicstaticvoidmain(String[]args){
newJTFDemo();
}

@Override
publicvoidactionPerformed(ActionEvente){
Stringname=jtf1.getText().trim();
if(name.equals("")){//判断是否是空字符串
JOptionPane.showMessageDialog(null,"用户名不能为空,请重新输入.","错误",JOptionPane.ERROR_MESSAGE);
}elseif(name.length()<5){//判断字符串的长度
JOptionPane.showMessageDialog(null,"用户名长度至少5位.","错误",JOptionPane.ERROR_MESSAGE);
}else{
this.setVisible(false);//旧窗口隐藏
this.dispose();//旧窗口销毁
newMainFrame(name);//打开新窗口,并把name传递进去
}

}

}
classMainFrameextendsJFrame{
Stringname;
publicMainFrame(Stringname){
this.name=name;
JLabeljl=newJLabel("欢迎用户:"+name+"回来!~");
add(jl);
setTitle("主窗口");//标题
setSize(280,180);//窗口大小
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//窗口点击关闭时,退出程序
setVisible(true);//窗口可见
}
}

效果图

2. java涓璼wing鏄浠涔堟剰鎬

Swing鏄疛ava骞冲彴鐨勪竴涓狦UI锛堝浘褰㈢敤鎴风晫闈锛夋嗘灦锛屽畠鎻愪緵浜嗕竴濂椾赴瀵岀殑缁勪欢銆佸竷灞绠$悊鍣ㄥ拰浜嬩欢浣撶郴锛岃兘澶熷揩閫熸惌寤哄悇绉嶇獥鍙e簲鐢ㄧ▼搴忋係wing鐨勪唬鐮佸彲浠ヨ法骞冲彴杩愯岋紝鍥犳ゅ彲浠ヤ繚璇佺▼搴忓湪涓嶅悓鎿嶄綔绯荤粺涓婄殑涓鑷存с


Swing鐨勭壒鐐逛箣涓鏄鍙瀹氬埗鎬ч珮銆傜敤鎴峰彲浠ラ氳繃淇鏀圭粍浠剁殑棰滆壊銆佸瓧浣撱佽竟妗嗙瓑灞炴э紝鑷瀹氫箟绐楀彛鐨勫栬傦紱鍚屾椂锛孲wing鎻愪緵浜嗗緢澶氬睘鎬у拰鏂规硶锛屽彲浠ュ圭粍浠剁殑琛屼负杩涜屽畾鍒躲傚彟涓涓鐗圭偣鏄杞婚噺绾с傜浉姣斾簬AWT锛堟娊璞$獥鍙e伐鍏峰寘锛夛紝Swing涓嶉渶瑕佽皟鐢ㄦ搷浣滅郴缁熺殑鏈鍦癆PI锛岃屾槸瀹屽叏鐢盝ava浠g爜瀹炵幇锛屽洜姝ゆ洿涓虹伒娲伙紝鍚屾椂涔熸洿涓哄崰鐢ㄨ祫婧愬皯銆


Swing骞挎硾搴旂敤浜嶫ava鍥惧舰鐣岄潰寮鍙戙傛棤璁烘槸妗岄潰杞浠惰繕鏄娓告垙寮鍙戯紝Swing閮藉彲浠ユ彁渚涗赴瀵岀殑缁勪欢鍜屽竷灞绠$悊鍣锛屾柟渚垮紑鍙戣呭疄鐜版洿鍔犵編瑙傘佹槗鐢ㄧ殑鐣岄潰銆傚彟澶栵紝鍦ㄤ紒涓氱骇搴旂敤棰嗗煙锛孲wing涔熻鐢ㄦ潵寮鍙戜竴浜涘㈡埛绔搴旂敤绋嬪簭锛屽侲RP銆丆RM绛夈

3. java中swing做表格翻页用什么类做

Swing中一般用JScrollPan来进行滚动,不需要使用翻页。

如果非要翻页,有两种方式:

  1. 一次检索出全部数据,放到TableModel中,这时可以设计另一个TableModel做成一个类似滑动窗口的方式,每次在窗口Model中只映射原Model的部分数据。

  2. 一次检索出一页数据,这与网页中的翻页完全相同。

对第一种情况,下面给出一个实现:

publicclass PageTableModel extends AbstractTableModel implements TableModel,TableModelListener{

private TableModel baseModel;

public PageTableModel(TableModel baseModel){

this.baseModel=baseModel;

baseModel.addTableModelListener(this);

}

/**当前页,从0开始编号.

*/

private int currentPage;

/**每页最多数据行数.

*/

private int pageSize=20;


/**获取总页数。

*

* @return

*/

public int getPageCount(){

int mod=baseModel.getRowCount()%pageSize;

int hasMode=mod>0?1:0;

return baseModel.getRowCount()/pageSize+hasMode;

}


public int getPageSize() {

return pageSize;

}


public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}


public int getCurrentPage() {

return currentPage;

}


public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

@Override

public int getRowCount() {

if(getCurrentPage()<getPageCount()-1)return pageSize;

return baseModel.getRowCount() % pageSize;

}


@Override

public int getColumnCount() {

return baseModel.getColumnCount();

}


@Override

public String getColumnName(int columnIndex) {

return baseModel.getColumnName(columnIndex);

}


@Override

public Class<?> getColumnClass(int columnIndex) {

return baseModel.getColumnClass(columnIndex);

}


@Override

public boolean isCellEditable(int rowIndex, int columnIndex) {

return baseModel.isCellEditable(getBaseModelRow(rowIndex), columnIndex);

}


@Override

public Object getValueAt(int rowIndex, int columnIndex) {

return baseModel.getValueAt(getBaseModelRow(rowIndex), columnIndex);

}


@Override

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

baseModel.setValueAt(aValue, getBaseModelRow(rowIndex), columnIndex);

}


@Override

public void tableChanged(TableModelEvent e) {

int firstRow,lastRow;

int minFirstRow=getBaseModelRow(0);

int maxFirstRow=getBaseModelRow(pageSize-1);

if(e.getFirstRow()>maxFirstRow)return;

if(e.getLastRow()<minFirstRow)return;

firstRow=getThisModelRow(e.getFirstRow());

if(firstRow<0)firstRow=0;

lastRow=getThisModelRow(e.getLastRow());

if(lastRow<0)lastRow=this.pageSize-1;

fireTableChanged(new TableModelEvent(this, firstRow, lastRow, e.getColumn(), e.getType()));

}


/**获取指定的行在底层Model中的行号.

*

* @param row

* @return

*/

private int getBaseModelRow(int row){

return getCurrentPage()*pageSize+row;

}

/**获取指定的底层Model中的行号对应的当前Model的行号.

* 如果底层Model中指定的行号不在当前Model的显示范围内,应该返回-1。

*

* @param row

* @return

*/

private int getThisModelRow(int row){

if(row/pageSize !=getCurrentPage())return -1;

return row%pageSize;

}

}

4. 使用swing方式从java程序中拖动文件到其他窗体(IE或explorer)

可以看看Swing Hacks这本书的Hack#65 文件拖放

阅读全文

与javaswing移动窗口相关的资料

热点内容
怎么把拍照取字的文件转成pdf 浏览:838
小米穿戴app哪里更换表盘 浏览:911
满足该条件更改文件内容的代码 浏览:503
xp系统怎么卸载win10系统文件 浏览:709
华为手机双系统app怎么转 浏览:317
u盘插上pc自动跳出文件夹 浏览:232
机密文件写在哪里 浏览:480
qq主题免费使用女孩 浏览:342
园林景观网站模板 浏览:717
五线谱入门基础视频教程下载 浏览:598
个人网站怎么盈利 浏览:618
怎么禁止程序启动程序运行 浏览:261
苹果平板的测距仪app有什么作用 浏览:229
乌云数据库酒店开房 浏览:674
查看linux用户账号密码 浏览:76
win7系统叠加网络 浏览:161
少儿编程猫的礼包兑换码是什么 浏览:274
tim文件下到哪里 浏览:147
微信支付设置指纹安卓 浏览:538
文件格式都有什么 浏览:731

友情链接