導航:首頁 > 編程語言 > 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移動窗口相關的資料

熱點內容
微信清除緩存圖片恢復 瀏覽:305
安卓app會閃退怎麼解決 瀏覽:429
哪些app背單詞是免費的 瀏覽:889
cf擊殺圖標放哪個文件夾 瀏覽:208
為什麼我的爐石不能查看完整數據 瀏覽:179
蘋果7音量按鍵不回彈 瀏覽:296
u盤兩個系統可以放一個文件夾嗎 瀏覽:538
linuxshell變數累加 瀏覽:386
win10控制面板怎麼看 瀏覽:574
如何編程換裝游戲程序 瀏覽:269
怎麼登錄沭陽縣民政局網站 瀏覽:451
iphone6降級ios7 瀏覽:92
怎麼隱藏三星應用程序圖標不見了 瀏覽:203
可以兼職的app 瀏覽:493
iphone圓角圖標製作 瀏覽:659
建設銀行app怎麼申請 瀏覽:163
系統備份文件夾在哪 瀏覽:998
qq分組exo韓文 瀏覽:849
華碩裝裝win7系統教程視頻 瀏覽:407
什麼是數據直連 瀏覽:210

友情鏈接