1. ホーム
  2. java

[解決済み] java.lang.Objectはint型に変換できない

2022-03-15 22:21:31

質問

JTableから数値をダウンロードする際に問題があります。Eclipseでは、jre JavaSE 1.7で、すべてOKです。IntelliJ IDEAでプロジェクトを開き、SDK java jdk 1.8を選択しました。

private int;
public void tableEdit(final JTable table) {

        table.getModel().addTableModelListener(new TableModelListener() {
            @Override
            public void tableChanged(TableModelEvent e) {
                // TODO Auto-generated method stub
                if (table.getCellEditor() != null) {

                    int col = table.getSelectedColumn();
                    id =  (int)table.getValueAt(table.getSelectedRow(), 0); //ERROR

エラーです。

java: incompatible types: java.lang.Object cannot be converted to int

編集する

新しい問題です。 私は2つのフィールド、IDおよびフィールド2(コンボボックス)を持っているJTableは、コンボボックスから値を選択した後、彼らは私が更新する必要がある行を知っているので、IDフィールドから値を取得したいと考えています。

categoryBox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent event) {
                if (newrow_flag == 0) {
                    JComboBox comboBox = (JComboBox) event.getSource();
                    Object item = event.getItem();
                    if (event.getStateChange() == ItemEvent.SELECTED
                            && box_flag_category > 0) {

                        Category selected_category = (Category) categoryBox
                                .getSelectedItem();

                        int rowid = Integer.getInteger(itemTable.getValueAt(
                                itemTable.getSelectedRow(), 0).toString()); //Error

                        id_category = selected_category.getId();


                        fireItemEvent(new ItemsEvent(rowid, "produkty", null,
                                null, null, id_category, id_company, "update"),
                                "box_category");

                    }
                    box_flag_category++;
                }
            }
        });

とエラーになる。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.magazyn.view.View$9.itemStateChanged(View.java:659)
    at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1223)
    at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1280)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1327)
    at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93)
    at javax.swing.JComboBox.setSelectedItem(JComboBox.java:576)
    at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:622)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:834)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    at java.awt.Component.processMouseEvent(Component.java:6527)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    [...]

エラーはこの行を指しています。

int rowid = Integer.getInteger(itemTable.getValueAt(
                                itemTable.getSelectedRow(), 0).toString());

解決方法は?

では、エラー内容をご覧ください。

<ブロッククオート

java: 非互換の型: java.lang.Object は int に変換できません。

そして、エラーを投げている行を見てください。

id =  (int)table.getValueAt(table.getSelectedRow(), 0);

さて、見ての通り、あなたは Objectint . これは許されない。だから、もう少し工夫が必要です。

int id = Integer.parseInt(table.getValueAt(table.getSelectedRow(), 0).toString());