10-08-2014, 10:58
|
|
|
|
חבר מתאריך: 10.01.07
הודעות: 2,011
|
|
JSpinner בתוך JTable
אהלן,
אני נאבקת עם איזשהו מקרה כבר כמה זמן ולא מצליחה למצוא פתרון.
יש לי טבלה עם 2 עמודות, policy ו-rate.
היא מתמלאת באופן דינאמי, ובגדול מה שנכנס ל policy אמור להיות מועתק לrate, אלא אם כן ב Policy הגיע הערך non-limit.
ובמקרה כזה אני צריכה שהתא המקביל בעמודה rate יהיה JSpinner, והמשתמש יוכל לבחור מה ה rate שהוא רוצה.
קצת כאב ראש אבל זה מה יש.
כל הסיבוך הזה הוא חלק מאפליקציה גדולה יותר, אבל אם אתם רוצים לראות קוד, פישטתי את זה למשהו קצת יותר בסיסי בשביל שיהיה נוח לקרוא:
קוד:
public class MyTable extends JFrame{
private JPanel panel = new JPanel();
private DefaultTableModel tableModel = new DefaultTableModel(new Object[]{"Policy", "Rate"},0);
private JTable table = new JTable(tableModel);
public MyTable(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,100);
addRowsDynamically();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(table);
add(panel);
setVisible(true);
}
public void addRowsDynamically(){
tableModel.addRow(new Object[]{"blocked", "blocked"});
tableModel.addRow(new Object[]{"100M", "100M"});
tableModel.addRow(new Object[]{"Non Limit", "-"});
}
public static void main (String [] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MyTable window = new MyTable();
window.setVisible(true);
}
});
}
}
כשמריצים את הקוד הזה, עולה החלון הבא:
מובן שהפונקציה addRowsDynamically לא באמת נראית ככה במקור, רק לשם פשטות עשיתי את השורות פה hard coded. גם החלון נראה קצת יותר נורמלי
יש לכם מושג איך אני משנה עכשיו שבמקום "-" יופיע JSpinner?
ואגב, שאלה אחרת על הדרך, כל הטבלה ניתנת לעריכה מקליקים פעמיים על תא כלשהו.
יש אפשרות לקבוע שהתאים לא יאפשרו עריכה, אלא אם כן מדובר ב JSpinner?
תודה רבה על כל עזרה שתינתן.
|