JTableで複数行の編集ができる方法
- JTableで複数行の編集ができる方法を解説します。
- JTextAreaを使った独自のCellEditorを作成することで、JTableで複数行の編集が可能です。
- キーボード入力で編集を開始するためには、セルにフォーカスがある状態であることが必要です。
- ベストアンサー
JTable で複数行の編集
JTable で複数行の編集ができるようにしたいと思っています。 JTextArea を使う独自の CellEditor を作ることで、できました。 ただ、編集を開始するのにマウスでダブルクリックする必要があります。 セルにフォーカスがある状態で、キーボード入力で編集を開始できないでしょうか? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ JTextField を使った DefaultCellEditor はできます。 自作の JTextArea を使う CellEditor でもできました。 しかし、JScrollPane を付けるとできなくなります。 解決策をご存知の方がいらっしゃいましたら、よろしくお願いします。 public class TextAreaCellEditor extends AbstractCellEditor implements TableCellEditor { private JTextArea textArea = new JTextArea(); private JScrollPane scroll = new JScrollPane(textArea); public TextAreaCellEditor() { scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); } public Object getCellEditorValue() { return textArea.getText(); } public boolean isCellEditable(EventObject anEvent) { if (anEvent instanceof MouseEvent) { return ((MouseEvent) anEvent).getClickCount() >= 2; } return true; } public boolean shouldSelectCell(EventObject anEvent) { return true; } public boolean stopCellEditing() { fireEditingStopped(); return true; } public void cancelCellEditing() { fireEditingCanceled(); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textArea.setText((value != null) ? value.toString() : ""); return scroll; // JScrollPane を付けなければ可能 // return textArea; } }
- taro1235
- お礼率100% (3/3)
- Java
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> セルにフォーカスがある状態で、 TABキーによる遷移のことなら、テーブルのアクションマップに新しいTABアクション(テキストエリアがキーフォーカスを取得する)を登録する必要があります。最初に、既存のアクションも呼び出す必要があるでしょうね。
その他の回答 (2)
- _ranco_
- ベストアンサー率58% (126/214)
次のようにすれば、テキストエリアにフォーカスを与えることができます: -------------------------------------------------------------------- import javax.swing.*; import javax.swing.table.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class TextAreaCellEditor extends AbstractCellEditor implements TableCellEditor, TableCellRenderer { private JTextArea textArea; private JScrollPane scroll; public TextAreaCellEditor() { textArea = new JTextArea(); scroll = new JScrollPane(textArea); } public JTextArea getTextArea(){ return textArea; } public Object getCellEditorValue() { return textArea.getText(); } public boolean shouldSelectCell(EventObject anEvent) { return true; } public boolean stopCellEditing() { fireEditingStopped(); return true; } public void cancelCellEditing() { fireEditingCanceled(); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textArea.setText((value != null) ? value.toString() : ""); textArea.setCaretPosition(textArea.getText().length()); return scroll; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ textArea.setText((value != null) ? value.toString() : ""); textArea.setCaretPosition(textArea.getText().length()); return scroll; } static void focusOnTextArea(JTable table){ InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0); final Action oldTabAction = table.getActionMap().get(im.get(tab)); Action tabAction = new AbstractAction(){ public void actionPerformed(ActionEvent e){ oldTabAction.actionPerformed(e); JTable table = (JTable)e.getSource(); int row = table.getSelectedRow(); int column = table.getSelectedColumn(); if (column == 1){ // このセルエディタのカラムだ table.editCellAt(row, column); // 強制的にエディットモードにする TextAreaCellEditor tace = (TextAreaCellEditor)(table.getCellEditor(row, column)); JTextArea ta = tace.getTextArea(); ta.requestFocusInWindow(); // テキストエリアにキーフォーカス } } }; table.getActionMap().put(im.get(tab), tabAction); // 右矢印キーも使いたい KeyStroke right = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0); im.put(right, im.get(tab)); } /* test */ public static void main(String[] args){ JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con = frame.getContentPane(); JTable table = new JTable(20, 3); table.setRowHeight(70); JScrollPane jsp = new JScrollPane(table); con.add(jsp, BorderLayout.CENTER); TextAreaCellEditor tace = new TextAreaCellEditor(); TableColumn tc = table.getColumn(table.getColumnName(1)); tc.setCellEditor(tace); // for column 1 tc.setCellRenderer(tace); focusOnTextArea(table); frame.pack(); frame.setVisible(true); } }
お礼
ありがとうございます。 「強制的にエディットモードにする」ことができるなんて 知りませんでした。 参考にさせていただきます。
- _ranco_
- ベストアンサー率58% (126/214)
amのget()に具体的な名前ではなくInputMap.get()の結果をそのまま渡したほうがいいですね。だいたいのストーリーは、次のようになるでしょう: ------------------------------------------------ InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); ... KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0); ... final Action oldTabAction = table.getActionMap().get(im.get(tab)); Action tabAction = new AbstractAction(){ public void actionPerformed(ActionEvent e){ oldTabAction.actionPerformed(e); ... ... ... ... } } ... table.getActionMap().put(im.get(tab), tabAction); ... KeyStroke right = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0); im.put(right, im.get(tab)); ------------------------------------------------
お礼
InputMap.get()の結果をそのまま渡しても、編集可能には なってくれませんでした。 #textArea.requestFocus()だけじゃダメなのかな F2キーが使えるようになったので、今回はこれでよしとします。 ご回答ありがとうございました。
関連するQ&A
- JScrollPaneのオブジェクトは位置位置
JScrollPaneについて、質問させて頂きます。 JScrollPaneに、JTextAreaを縦一列に配置したJPanelを追加しようとしたのですが、何故かJScrollPaneに配置すると、JPanel内のJTextAreaの配置が横一列になってしまいます。 つまり、現在は TEST1 TEST2 TEST3 TEST4....(JTextAreaを並べたJPanelです) となっているJScrollPaneを Test1 Test2 Test3 Test4 のように表示したいのです。 大学の授業に絡むコードですので全てを貼付けるとネットから拾ってきたのではと思われてしまうため、全ては貼付けられませんがコードの一部を張りつけさせて頂きます。 まずはJScrollPaneの設定ですが private JScrollPane getScroll() { if (scroll == null) { scroll = new JScrollPane(innerHomeTimeLine); scroll.setPreferredSize(new Dimension(width, height)); scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroll.setWheelScrollingEnabled(true); } return scroll; } としてJScrollPaneを作成しています、innerHomeTimeLineはJTextAreaを縦一列に並べたJPanelです。 このJScrollPaneを this.add(getScroll(),BorderLayout.NORTH); でJPanelに追加し、そのJPanel(homeTimeLine)をthis.add(homeTimeLine,BorderLayout.CENTER); でJAppletに追加し、表示しています。 JPanel(innerHomeTimeLine)そのものをJAppletに追加すると縦一列に並んだまま表示出来るのは確認しているので、JScrollPaneの設定の問題だと思うのですが、どうすれば良いのでしょうか.... やり方をご存知の方がいましたら、解答して頂けると助かります、宜しくお願いします。 さすがにこのコードだけでは解答は無理、といったことでしたら、必要な部分を教えて頂ければ、抜き出して追記させて頂きます。
- ベストアンサー
- Java
- JTextAreaを持ったJInternalFrameを作りたい
swingでメモ帳を作っているのですが、 新規作成が押されるごとに新しい JTextAreaを持ったJInternalFrameを作りたいのです。 他にもコピーやJpopupメニューなども機能として 追加しているのですがそれらの機能も新しく作った JInternalFrameで機能するようにしたいんです。 参考になるサイトなど見たりしたんですが 自力では無理でした。。どなたかお願いします☆ public class NotePad extends JFrame{ JDesktopPane desktop = new JDesktopPane(); static JTextArea editArea = new JTextArea(); static NotePad frame = new NotePad(); public static void main(String[] args){ frame.setTitle("メモ帳"); frame.setSize(500,400); frame.setVisible(true); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); } public NotePad(){ JScrollPane sp = new JScrollPane(editArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); NewAction newAction = new NewAction(); JMenuBar mb = new JMenuBar(); JMenu mn1 = new JMenu("ファイル"); mn1.add(newAction); mb.add(mn1); setJMenuBar(mb); getContentPane().add(sp, BorderLayout.CENTER); } class NewAction extends AbstractAction{ NewAction(){ putValue(NAME, "新規ファイル作成"); public void actionPerformed(ActionEvent e){ JInternalFrame inframe = new JInternalFrame( true, true, true, true); JTextArea ta = new JTextArea(""); JScrollPane sp2 = new JScrollPane(ta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); inframe.getContentPane().add(spane) desktop.add(inframe); inframe.setVisible(true); }
- ベストアンサー
- Java
- setLineWrapの使い方
初めまして、皆さん。馬鹿な初心者の悩みを聞いてください。 卒論に向けて、現在、JAVAでアプレットプログラムを書いているのですが、 TextAreaを自動改行させようとコンパイルをかけると、 以下のようなエラーがでてしまうのです。 Java初心者なので、非常に困っています。 どうか教えてくださいよろしくお願いいたします。 なお、実行環境は WindowsXP Home Edition JDK1.3.1_010 です。 --------------------ソース-------------------- /* TextArea改行用テスト */ import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; public class JTextArea extends JApplet{ public void init() { JTextArea text = new JTextArea(); text.setLineWrap(true); getContentPane().add(new JScrollPane(text)); } } --------------------エラー-------------------- JTextArea.java:12: シンボルを解決できません。 シンボル: メソッド setLineWrap (boolean) 場所 : JTextArea の クラス text.setLineWrap(true); ^ エラー 1 個
- ベストアンサー
- Java
- SwingのJTableについて
swingなのですが下記のプログラムで実現できない点があります。 1.isCellEditableメソッドを使ってセルを編集可能にしたのですが 編集した文字が消えてしまいます。 2.また、ボタンを配置してボタンを押下時に編集したセルの 行のデータをコンソールに表示したいのですがどうすればいいかわかりません。 3.画面レイアウトがsetLocation(x, y)した位置に表示されません。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class JTableSample4 implements ActionListener { static Vector<String>[] data = new Vector[3]; static JFrame frame; public static void main(String[] args) { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); JPanel panel1 = new JPanel(); // セルのデータ作成 for (int i = 0; i < 3; i++) { data[i] = new Vector<String>(); } // data[0]に名前、data[1]に住所、data[2]に電話番号 data[0].addElement("鈴木一郎"); data[1].addElement("東京都"); data[2].addElement("xxxxxxxxxx"); data[0].addElement("佐藤花子"); data[1].addElement("千葉県"); data[2].addElement("yyyyyyyyyy"); data[0].addElement("田中浩二"); data[1].addElement("埼玉県"); data[2].addElement("zzzzzzzzzz"); data[0].addElement("小川伸介"); data[1].addElement("新潟県"); data[2].addElement("aaaaaaa"); data[0].addElement("佐藤和也"); data[1].addElement("群馬県"); data[2].addElement("bbbbbbb"); data[0].addElement("渡辺悟"); data[1].addElement("愛知県"); data[2].addElement("ccccccc"); data[0].addElement("橋本智也"); data[1].addElement("愛媛県"); data[2].addElement("ddddddd"); data[0].addElement("永井祐二"); data[1].addElement("栃木県"); data[2].addElement("eeeeeee"); data[0].addElement("細貝昭二"); data[1].addElement("福岡県"); data[2].addElement("fffffff"); data[0].addElement("堀野友光"); data[1].addElement("長野県"); data[2].addElement("gggggggg"); // テーブル作成 TableModel tableModel = new AbstractTableModel() { // 行数 public int getRowCount() { return 10; } // 列数 public int getColumnCount() { return 3; } // row行column列の値をセット public Object getValueAt(int row, int column) { return data[column].elementAt(row); } // タイトル部の値をセット public String getColumnName(int column) { switch (column) { case 0: return "名前"; case 1: return "住所"; case 2: return "電話番号"; } return ""; } /******************セルの編集 可/不可を操作するメソッド**********************/ public boolean isCellEditable(int rowIndex, int columnIndex) { /*0が1カラム目 1が2カラム目なのでこの場合電話番号だけ編集可*/ if (columnIndex == 0 || columnIndex ==1) { /*falseは編集不可*/ return false; } else /*trueは編集可*/ return true; } }; JLabel label = new JLabel("電話番号だけがセルを編集することができます"); label.setLocation(10, 10); label.setSize(300, 20); JButton button = new JButton("Click Me!"); button.setLocation(10, 400); button.setSize(20, 20); //button.addActionListener(); JTable table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setLocation(10, 40); scrollPane.setSize(750, 180); panel1.add(button); panel1.add(label); panel1.add(scrollPane); panel1.setBounds(10, 10, 800, 230); frame.add(panel1); frame.setSize(800, 600); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("test"); } }
- ベストアンサー
- Java
- SwingでJtableのヘッダ行が表示されません
SwingでJtableのヘッダ行が表示されません 解決方法とどうして表示されなかったのか理由もできればお願いします。 import java.util.Vector; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class Table_Calendar extends JFrame{ Vector<String>[] data = new Vector[3]; public static void main(String args[]){ new Table_Calendar(); } public Table_Calendar(){ super(); // ウィンドウサイズ this.setSize(800, 600); // レイアウト this.setLayout(null); // ウィンドウクローズ時の処理 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // セルのデータ作成 for (int i = 0; i < 3; i++) { data[i] = new Vector<String>(); } // data[0]に名前、data[1]に住所、data[2]に電話番号 data[0].addElement("鈴木一郎"); data[1].addElement("東京都"); data[2].addElement("xxxxxxxxxx"); // テーブル作成 TableModel tableModel = new AbstractTableModel() { // 行数 public int getRowCount() { return 1; } // 列数 public int getColumnCount() { return 3; } // row行column列の値をセット public Object getValueAt(int row, int column) { return data[column].elementAt(row); } // タイトル部の値をセット public String getColumnName(int column) { switch (column) { case 0: return "名前"; case 1: return "住所"; case 2: return "電話番号"; } return ""; } }; JTable table = new JTable(tableModel); table.setLocation(10, 20); table.setSize(600,500); JPanel panel2 = new JPanel(); panel2.setLayout(null); panel2.add(table); /*setBounds(int x,int y,int width,int height)*/ panel2.setBounds(10, 10, 700,700); this.add(panel2); this.setVisible(true); } }
- ベストアンサー
- Java
- JavaのJTableのセル単体の色設定
今日は JavaのJtableの『マウスで選択したセル』の色を赤色に設定するコードを書きましたが、セル単体でバックグランドの色が変更できまず、行単位で変更されます。 又、変更のタイミングは、他のセルを、マウス選択したときに、以前のセルの行が赤く変更になります。 Q1)セル単体で、バックグランドの変更を行い、その変更タイミングは、クリックと同時に 行う様に改善したく質問いたします。 注)Java暦は、初心者で約2週間ですが。下記にソースを添付いたしますので、宜しくお願いいたします。 //============================== package packageA; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class JTableTest2 extends JFrame{ public static void main(String[] args){ JTableTest2 test = new JTableTest2("T"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } JTableTest2(String name){ setBounds( 0, 0, 400, 200); setTitle(name); String d[][] = { {"A","8","7"}, {"B","6","5"}, {"C","7","6"} }; String t[] = {"名","数","英"}; DefaultTableModel tm = new DefaultTableModel(d,t); final JTable tablex = new JTable(tm); /* final JTable tablex = new JTable(tm){ @Override public Component prepareRenderer(TableCellRenderer tcr, int row, int column) { Component c = super.prepareRenderer(tcr, row, column); if (row == 2 && column == 2) { c.setForeground(Color.BLUE); c.setBackground(Color.RED); } else { c.setForeground(getForeground()); c.setBackground(getBackground()); } return c; } }; */ tablex.addMouseListener( new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { int row=tablex.getSelectedRow(); int col=tablex.getSelectedColumn(); // TableCellRenderer tcr = tablex.getCellRenderer(row,col); // Component c = tablex.prepareRenderer(tcr,row,col); Component c = tablex.getComponentAt(row,col); c.setForeground(Color.BLUE); c.setBackground(Color.RED); System.out.println(" "+row+" "+col); } } ); JPanel p1 = new JPanel(); JScrollPane sp1 = new JScrollPane(tablex); sp1.setPreferredSize(new Dimension(250, 80)); p1.add(sp1); getContentPane().add(p1, BorderLayout.NORTH); } }
- ベストアンサー
- Java
- ホームページ内のFlv動画をiPadでも再生
ホームページ内の movie.flv を Flaver3 を使用して下記の内容で再生させることができました。 しかし、このままではiPad等を使用している人には再生されません。 これに何をどう追加したらiPadでも再生できるようになるか教えて下さい。 Googleで色々検索してみましたが、該当する内容を探すことはできませんでした。 よろしくお願いします。 <object data="flaver.swf" type="application/x-shockwave-flash" width="650" height="430"> <param name="movie" value="flaver.swf" /> <param name="FlashVars" value="file=movie.flv&image=sample.jpg&title=サンプル&cookie=true&toolzoom=true&loop=true &repeat=true&autoplay=true&follow=true&bright=50&smooth=true&aspect=auto&getmeta=true&wheel=true&scroll=true&volume=50" /> <param name="allowFullScreen" value="true" /> <param name="allowScriptAccess" value="always" /> </object>
- ベストアンサー
- HTML
- Javaのプログラムの質問です。
Javaのプログラムについての質問です。 Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。 注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。実装するメソッドは、コードの中に番号を振ってあります。 import java.util.Collection; import java.util.Iterator; import java.util.ListIterator; import java.util.List; class LocalList implements List{ private int Count; private String Data[]; private Iterator ite; private ListIterator lite; // コンストラクタ void mylist(){ Data = new String[10]; Count = 0; } (1) public boolean add(Object str){ if(Count >= 10){ return false; } Data[Count ++] = new String((String)str); return true; } public void add(int i,Object str){ } public boolean addAll(Collection c){ return false; } public boolean addAll(int i,Collection c){ return false; } (2) public void clear(){ Count = 0; } public boolean contains(Object str){ return false; } public boolean containsAll(Collection c){ return false; } public boolean equals(Object str){ return false; } (3) public Object get(int i){ return (i >= Count); } public int hashCode(){ return -1; } public int indexOf(Object str){ return -1; } public boolean isEmpty(){ return false; } public Iterator iterator(){ return ite; } public int lastIndexOf(Object str){ return -1; } public ListIterator listIterator(){ return lite; } public ListIterator listIterator(int i){ return lite; } (4) public Object remove(int i){ return (i >= Count); } public boolean remove(Object str){ return true; } public boolean removeAll(Collection c){ return false; } public boolean retainAll(Collection c){ return false; } (5) public Object set(int i,Object str){ return Data[i]; } (6) public int size(){ return Count; } public List subList(int i,int j){ return this; } public Object[] toArray(){ return Data; } public Object[] toArray(Object[] a){ return Data; } } class Main { public static void main(String[] args) { mylist sub = new mylist(); sub.add("ビルドバーニングガンダム"); sub.add("ライトニングガンダム"); sub.add("ウイニングガンダム"); sub.add("ガンダムフェニーチェリナーシタ"); sub.add("R・ギャギャ"); for(int i = 0; i < sub.size(); i++){ System.out.println(sub.get(i)); } // 改行 System.out.println(); // setメソッド sub.set(1,"ガンダムエピオン"); for(int i = 0; i < sub.size(); i++){ System.out.println(sub.get(i)); } // 改行 System.out.println(); // sizeメソッド System.out.println("\r\n" + "機体数は" + sub.size() + "です" + "\r\n"); // removeメソッド sub.remove(1); for(int i = 0; i < sub.size(); i++){ System.out.println(sub.get(i)); } // clearメソッド sub.clear(); System.out.println("\r\n" + "機体数が" + sub.size() + "になったので負けです"); } } setメソッドとremoveメソッド以外は起動するのようになったのですが、この2つがうんともすんとも動きません。ジェネリクス型を使うという考え方もあるらしいのですが、ネットで調べてもピンと来ず寸詰まり状態になってしまっています。後少しだと思うのですが。。。。 どなたかご教授頂けないでしょうか?よろしくお願い致します。
- 締切済み
- Java
- VB2010 のユーザコントロールのプロパティ
お世話になっております Windows7、VB2010 Expless で開発しております 後にVS2010のVBに移行する予定です ユーザコントロールでテキストボックスを作っております そこで、初期値を設定しようと思い設定をしたのですが反映されません Imports System.ComponentModel <DefaultValue(True)> Public Property Chk_Num() As Boolean Set(ByVal value As Boolean) If (value = True) Then blnChk_Num = value Else blnChk_Num = value End If End Set Get Return blnChk_Num End Get End Property <System.ComponentModel.DefaultValueAttribute(1)> Public Property Chk_ZenHankaku() As Integer Set(ByVal value As Integer) If (value >= 0 And value <= 2) Then '0以上2以下 blnChk_ZenHankaku = value Else 'マイナス、または3以上の場合は0にする blnChk_ZenHankaku = 0 End If End Set Get Return blnChk_ZenHankaku End Get End Property どちらの方法でも、Booleanの場合は「False」、Integerの場合は「0」になってしまいます また、初期化~プロパティ宣言間に、改行しても改行しなくても結果は同じです どうにか設定できる方法はありますでしょうか よろしくお願いします
- ベストアンサー
- Visual Basic
- JavaAppletがIEで表示できない
毎日すいません。 せっぱ詰まってて、非常に困ってます。 実は、昨日教えて頂いたものは、AppletViewerを介して、 しっかりとできあがったのですが、なぜか、インターネットエクスプローラからは見えないんです。 作ったファイル、 JText01.class JText01.html JText01.java は、全て同じフォルダにあります。 ご存じの方、どうかお力を貸して下さい。 お願いします。 ------------- HTML ソース ------------- <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>JAVA Applet Test</title> </head> <body> <h2>JText01</h2> <applet code="JText01.class" width="300" height="100"> </applet> </body> </html> ------------- JAVA ソース ------------- /* TextArea改行用テスト */ import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; public class JText01 extends JApplet{ public void init() { JTextArea ta = new JTextArea( 5, 20); ta.setLineWrap(true); getContentPane().add(new JScrollPane(ta), BorderLayout.CENTER); }
- ベストアンサー
- Java
お礼
_ranco_さん、ご回答ありがとうございます。 教えてもらったことをヒントに、F2キーを押すと編集できるように なりました。 以下のような感じです。 --- ActionMap am = table.getActionMap(); final Action oldStartEditingAction = am.get("startEditing"); AbstractAction startEditingAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { oldStartEditingAction.actionPerformed(e); textArea.requestFocus(); } }; am.put("startEditing", startEditingAction); --- 理想をいうと、F2キーを押さなくても編集状態に なってくれるといいんですけど。 TABキーは、"selectNextColumnCell" アクションを置き換えることに なると思いますが、これはうまくいきませんでした。 それに、TABキーだけじゃなく、矢印キーで遷移した場合も 編集可能になってほしいです。 何か方法はないでしょうか?