• 締切済み

フォーカスのあるセルを中心に表示したい

こんにちは。 JTable table = new JTable(); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(table); という感じでテーブルを表示しています。 テーブルのカラム数が多く、セルをタブ移動させていくと、 フレームの右側に常にフォーカスを持ったセルが来るようになりますが、フォーカスを持ったセルがフレームの中心に表示されるようにしたいです。 説明が下手で申し訳ございません。 用はスクロールが自動的にされるみたいなイメージです。 宜しくお願いします。

みんなの回答

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.1

import javax.swing.*; import java.awt.*; public class Demo extends JScrollPane{ public Demo(){ MyTbl t=new MyTbl(20,10); t.setAutoResizeMode(t.AUTO_RESIZE_OFF); setViewportView(t); } public static void main(String[] args){ JFrame f=new JFrame(); f.getContentPane().add(new Demo()); f.setSize(new Dimension(300,200)); f.show(); } class MyTbl extends JTable{ public void changeSelection(int r,int c,boolean t,boolean e){ super.changeSelection(r,c,t,e); Rectangle g=getCellRect(r,c,true); getViewport().setViewPosition(new Point(g.x-(getViewportBorderBounds().width-g.width)/2,(int)getViewport().getViewPosition().getY())); Demo.this.repaint(); } MyTbl(int r,int c){super(r,c);} } } http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21620&forum=12&4 それよりもまず、 「デフォルトの挙動を変えなければならない十分な理由」があるのかを 再考することのほうが重要。

すると、全ての回答が全文表示されます。

関連するQ&A