JTable无法在Java Applet的表中呈现JCheckBox或JComboBox [英] JTable not rendering JCheckBox or JComboBox in the table in Java Applet

查看:95
本文介绍了JTable无法在Java Applet的表中呈现JCheckBox或JComboBox的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法获取用于显示小程序中的复选框或组合框的JTable.

Im having trouble getting my JTable that im using to display either check boxes or combo boxes in my applet.

这是无法正常工作的代码

Here is the code that is not working correctly

 String[] options = {"download", "ignore"};
 Object[] obj = {new JComboBox(options), ((MetadataList)array.get(1)).getMetadata("Filename").getValue()};

 defaultTableModel2.addRow(obj);

defaultTableModel2只是一个DefaultTableModel defaultTabelModel2 = new DefaultTableModel(),所以那里没有什么太大的戏剧性.上面的代码使用的是JComboBox,但我也尝试过使用JCheckBox,并且存在相同的问题.

The defaultTableModel2 is simply a DefaultTableModel defaultTabelModel2 = new DefaultTableModel() so nothing too dramatic there. The code above is using a JComboBox, but I have also tried using a JCheckBox as well and the same issues were present.

javax.swing.JComboBox[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.BasicComboBoxUI$Handler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@8380df,flags=320,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=download] 

是显示的而不是JComboBox

is what appears instead of a JComboBox

任何帮助将不胜感激!

推荐答案

例如:

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

@SuppressWarnings("serial")
public class TableJunk extends JPanel {
   enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}
   MyTableModel tableModel = new MyTableModel();
   private JTable myTable = new JTable(tableModel);

   public TableJunk() {
      setLayout(new BorderLayout());
      add(new JScrollPane(myTable));

      Object[] rowData = {Day.MONDAY, Boolean.TRUE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.TUESDAY, Boolean.TRUE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.WEDNESDAY, Boolean.TRUE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.THURSDAY, Boolean.TRUE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.FRIDAY, Boolean.TRUE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.SATURDAY, Boolean.FALSE};
      tableModel.addRow(rowData );
      rowData = new Object[]{Day.SUNDAY, Boolean.FALSE};
      tableModel.addRow(rowData );

      // create the combo box for the column editor          
      JComboBox<Day> comboBox = new JComboBox<TableJunk.Day>(Day.values());
      myTable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(comboBox));
   }

   private static void createAndShowGui() {
      TableJunk mainPanel = new TableJunk();

      JFrame frame = new JFrame("TableJunk");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }


   private static class MyTableModel extends DefaultTableModel {
      private static final String[] COLUMN_NAMES = {"Day", "Work Day"};

      public MyTableModel() {
         super(COLUMN_NAMES, 0);
      }

      // this method will allow the check box to be rendered in the 2nd column
      public java.lang.Class<?> getColumnClass(int columnIndex) {
         if (columnIndex == 0) {
            return Day.class;
         } else if (columnIndex == 1) {
            return Boolean.class;
         } else {
            return super.getColumnClass(columnIndex);
         }
      };
   }
}

这篇关于JTable无法在Java Applet的表中呈现JCheckBox或JComboBox的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆