找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限看帖不用回覆搞笑、娛樂、精彩的影片讓你看安全提問(回答) 和 永久尊貴會員 事宜
mega無碼強姦人妖中文新竹按摩
大象傳媒deeperprincess魔女は復プリンセssis 679

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]異修羅10-

[繁]藥師少女的獨語22

[簡]SHAMAN KING FLOW

[繁]治癒魔法的錯誤使

[繁]不死不運23-

[超清繁中]霹靂天機貳
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2314|回復: 3

[作業] [已解決]java如何儲存表格裡的下拉式選單[複製鏈接]

Rank: 2Rank: 2

帖子
106
積分
242 點
潛水值
23864 米
發表於 2009-8-4 12:11 AM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
本帖最後由 ericc13 於 2009-9-17 12:21 AM 編輯
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.event.*;
  5. import javax.swing.border.*;
  6. import javax.swing.JTable;

  7. public class table extends JFrame {
  8.     static table app = new table();
  9.     private JFrame mainFrame;
  10.     JTable jtable;
  11.     JButton savetable;
  12.     public table() {
  13.         mainFrame = new JFrame("儲存");
  14.       ClassLoader cl = this.getClass().getClassLoader();
  15.       JComboBox jcombobox1 = new JComboBox();
  16.       JComboBox jcombobox2 = new JComboBox();
  17.       jcombobox1.addItem(" " );
  18.       jcombobox1.addItem("1" );
  19.       jcombobox1.addItem("2" );
  20.       jcombobox2.addItem(" " );
  21.       jcombobox2.addItem("4" );
  22.       jcombobox2.addItem("5" );
  23.       jcombobox1.setSelectedIndex(1);
  24.       jcombobox1.setMaximumRowCount(4);   
  25.       jcombobox2.setSelectedIndex(1);
  26.       jcombobox2.setMaximumRowCount(4);      
  27.       String[] columnheader = {"","", ""};
  28.       Object[][] data = {
  29.       {new Integer(1), " ", " "},
  30.       {new Integer(2), " ", " "},
  31.       {new Integer(3), " ", " "},
  32.       };
  33.       
  34.       jtable = new JTable(data, columnheader);
  35.       jtable.setPreferredScrollableViewportSize(new Dimension(500,100));
  36.       jtable.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(jcombobox1));
  37.       jtable.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(jcombobox2));
  38.       JButton savetable = new JButton("儲存表格");
  39.       savetable.setPreferredSize(new Dimension(120,30));
  40.       savetable.addActionListener(new java.awt.event.ActionListener() {
  41.           public void actionPerformed(java.awt.event.ActionEvent e)
  42.           {
  43.               saveTable();
  44.           }
  45.       });
  46.       
  47.       Container con1 = mainFrame.getContentPane();
  48.       con1.setLayout(new FlowLayout());
  49.       con1.add(jtable);
  50.       con1.add(savetable);
  51.       this.add(con1);
  52.       this.validate();
  53.       this.setSize(new Dimension(300, 150));
  54.       this.setVisible(true);
  55.       this.addWindowListener(new WindowAdapter() {
  56.         public void windowClosing(WindowEvent e) {
  57.           System.exit(0);
  58.         }
  59.       });   
  60.     }
  61.      private void saveTable()
  62.         {

  63.         }
  64.     public static void main(String[] args) {
  65.     }
  66. }
複製代碼
我想要按一下下面的按鍵
然後把表格裡面下拉式選單的值給存起來
等到下一次打開程式後
程式就會顯示上一次存的值
有人知道要怎樣寫嗎...
瀏覽完整內容,請先 註冊登入會員
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 1

帖子
105
積分
61 點
潛水值
12925 米
發表於 2009-8-4 08:20 PM|顯示全部樓層
因為關閉程式就會把記憶體清掉
(實際上不一定會清掉,但是會告訴OS沒有要用那塊)
再啟動有可能會用到同一塊記憶體
不過程式會把它當成未使用的記憶體
所以只能寫入檔案才能做到
java提供"序列化"可以把一個物件寫成一個檔案
或是自己寫一個設定檔都可以
找一下java.io類別的資料就能解決了

使用道具檢舉

pc75111329 該用戶已被刪除
發表於 2009-8-4 11:31 PM|顯示全部樓層
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
沒錯沒錯,我想了幾小時,也發現此問題。關掉程式,在開基本上,程式內給予記憶的記憶元
都被刷新了,唯一可能就是輸出存成檔案,到時再用讀取方式讀進來。java.io 有很多,你可挑你喜歡的使用,把它存成data 那樣的陣列形式,到時利用判斷將他讀進來。 或者做個開啟舊檔的JMenu
也可以。
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
391
積分
221 點
潛水值
21262 米
發表於 2009-8-6 04:32 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
要做到這個功能就必須把資料輸出成一個檔案
下次開起時再讀入剛剛的檔案資料
這樣就可以實現你要的功能了
給你一個簡單的範例你自行研究看看
  1. import javax.swing.*;
  2. import javax.swing.border.*;
  3. import javax.swing.event.*; //引用包含ItemListener介面的套件

  4. import java.awt.*;
  5. import java.awt.event.*; //引用處理事件的event套件

  6. import java.io.*; //引用定義File類別的套件

  7. public class MemComboEX extends JFrame{

  8.     final static String FILE_PATH = "data\\item.dat";
  9.     //儲存組合方塊清單選項內容的檔案

  10.     MemComboBox mcbBank = new MemComboBox(FILE_PATH);
  11.     //以包含選項內容的字串建立組合方塊

  12.     JLabel lbSelBank = new JLabel("顯示選取結果");
  13.     //顯示組合方塊選取結果的標籤

  14.     String strMsg = "選取或輸入銀行名稱";

  15.     //定義並宣告回應在組合方塊內
  16.     //按下 Enter 鍵觸發之ActionEvent的監聽器物件
  17.     ActionListener al = new ActionListener(){
  18.         public void actionPerformed(ActionEvent e){

  19.             MemComboBox source = (MemComboBox)e.getSource();
  20.             //取得引發事件的MemComboBox物件

  21.             String strInp = (String) source.getSelectedItem();
  22.             //取得被選取項目

  23.             //若被選取的項目內容與組合方塊顯示的字串相同,
  24.             //則終止事件回應
  25.             if(strInp.equals(strMsg))
  26.                 return;

  27.             source.addItem(strInp);
  28.             //取得被選取項目
  29.         }
  30.     };

  31.     MemComboEX(){

  32.         mcbBank.setSelectedIndex(-1); //設定預設不選取任何選項

  33.         ComboBoxEditor cmbeBank = mcbBank.getEditor();
  34.         //取得組合方塊內容編輯元件

  35.         mcbBank.configureEditor(cmbeBank, strMsg);
  36.         //設定內容編輯元件的預設值

  37.         mcbBank.addItemListener(new ItemListener(){

  38.             //回應改變選項狀態的動作
  39.             public void itemStateChanged(ItemEvent e){

  40.                 if(e.getStateChange() == ItemEvent.SELECTED)
  41.                     lbSelBank.setText(mcbBank.getSelectedItem()
  42.                         + "[" + mcbBank.getSelectedIndex() + "]");
  43.             }
  44.         });

  45.         //註冊回應mcbBank元件ActionEvent事件的監聽器
  46.         mcbBank.addActionListener(al);

  47.         //註冊監聽WindowEvent事件的監聽器物件,
  48.         //並運用關閉視窗的機會儲存組合方塊的Model物件
  49.         addWindowListener(new WindowAdapter(){

  50.             //回應視窗關閉事件
  51.             public void windowClosing(WindowEvent e){
  52.                 mcbBank.save(FILE_PATH);
  53.                 System.exit(0);
  54.             }
  55.         });

  56.         //建立包含各元件的Box容器, 並將元件加入
  57.         Box bxBank = new Box(BoxLayout.X_AXIS);
  58.         bxBank.add(Box.createHorizontalStrut(10));
  59.         bxBank.add(new JLabel("匯入銀行 : ", JLabel.RIGHT));
  60.         bxBank.add(mcbBank);
  61.         bxBank.add(Box.createHorizontalStrut(10));
  62.         bxBank.add(new JLabel("選取結果 : ", JLabel.RIGHT));
  63.         bxBank.add(lbSelBank);
  64.         bxBank.add(Box.createHorizontalGlue());

  65.         bxBank.setBorder(new EmptyBorder(5, 5,  5, 5));
  66.         //設定寬度為5的空白框線

  67.         getContentPane().add(bxBank); //將Box容器加入內容面版

  68.         //設定視窗預設的關閉動作、視窗大小, 並顯示視窗   
  69.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
  70.         setSize(450, 80);
  71.         setVisible(true);
  72.     }

  73.     public static void main(String args[]) {
  74.         new MemComboEX(); //宣告視窗框架物件
  75.     }
  76. }

  77. //定義可將選項資料儲存至檔案,
  78. //與從檔案取得選項資料, 可記憶選項的組合方塊
  79. class MemComboBox extends JComboBox {

  80.     public MemComboBox(Object[] items){
  81.         super(items); //呼叫基礎類別的建構子

  82.         initial(); //起始組合方塊
  83.     }

  84.     public MemComboBox(){
  85.         initial(); //起始組合方塊
  86.     }

  87.     public MemComboBox(String fileName){
  88.         initial(); //起始組合方塊

  89.         load(fileName); //載入儲存選項內容的檔案
  90.     }

  91.     private void initial(){
  92.         setMaximumRowCount(20);
  93.         //設定組合方塊之清單可列出選項的最大筆數

  94.         setEditable(true); //設定文字方塊可執行編輯
  95.     }

  96.     //判斷清單內是否有重複的選項,
  97.     //若無則新增選項
  98.     public void addItem(Object item){

  99.         //若清單內沒有選項則直接將選項加入
  100.         if(getItemCount() == 0){
  101.             super.addItem(item);
  102.             return;
  103.         }

  104.         //判斷清單內是否已經存在相同的選項,
  105.         //是則停止執行
  106.         for(int i=0; i<getItemCount(); i++)    {
  107.             if((getItemAt(i)).equals(item)){
  108.                 return;
  109.             }
  110.         }

  111.         super.addItem(item); //將清單內沒有的選項加入清單
  112.     }

  113.     //將儲存組合方塊之清單選項的Model物件寫入指定檔案
  114.     public void save(String fileName){
  115.         try{            
  116.             FileOutputStream fos = new FileOutputStream(fileName);
  117.             ObjectOutputStream oos = new ObjectOutputStream(fos);
  118.             //宣告將Model物件輸出至指定檔案的輸出串流物件

  119.             oos.writeObject(getModel());
  120.             //取得組合方塊使用的Model物件, 並寫入檔案

  121.             oos.flush(); //清空輸出串流, 並將資料寫入緩衝區
  122.             oos.close(); //關閉物件輸出串流
  123.             fos.close(); //關閉檔案輸出串流
  124.         }
  125.         catch(Exception ex){
  126.             ex.printStackTrace();
  127.         }
  128.     }

  129.     //從指定檔案載入儲存組合方塊清單內容的Model物件
  130.     public void load(String fileName){
  131.         try {
  132.             File file = new File(fileName);
  133.             //宣告代表儲存Model物件之檔案的File

  134.             if(!file.exists()){ //判斷是否可正確取得檔案
  135.                 String[] strBank = {"郵局", "建華銀行", "中華商銀", "合作金庫"};
  136.                 //宣告建立組合方塊選項內容的字串陣列

  137.                 setModel(new DefaultComboBoxModel(strBank));
  138.                 //以String物件陣列宣告Model物件

  139.                 return;
  140.             }

  141.             FileInputStream fis = new FileInputStream(file);
  142.             ObjectInputStream ois = new ObjectInputStream(fis);
  143.             //宣告讀取Model物件的輸入串流物件

  144.             Object obj = ois.readObject(); //從串流讀取物件

  145.             //判斷取得物件之型別是否為ComboBoxModel
  146.             if(obj instanceof ComboBoxModel){
  147.                 removeAllItems(); //移除所有選項
  148.                 setModel((ComboBoxModel)obj);
  149.                 //設定組合方塊使用Model物件的內容做為選項
  150.             }
  151.             ois.close(); //關閉物件輸入串流
  152.             fis.close();  //關閉檔案輸入串流
  153.         }
  154.         catch(Exception ex){
  155.             ex.printStackTrace();
  156.         }
  157.     }
  158. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部