2列目を右寄せにする方法とは?

このQ&Aのポイント
  • Javaの勉強中に、2列目の右寄せができない問題に直面しています。
  • ソースコードの書き方やリファレンスの調べ方がうまくできていないのかもしれません。
  • 右寄せの方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

2列目を右寄せにしたい

今JAVAを勉強しているのですが、 下記のソース上でどうしても 列の右寄せができません。 リファレンスの調べ方が下手なのかもしれませんが わかる方宜しくお願いします。 ---------------------------------------------- import java.awt.*; import javax.swing.*; public class Sample3 extends JApplet { private JLabel lb; private JTable tb; private JScrollPane sp; public void init() { //コンテンツペインの取得 Container cnt = getContentPane(); String colname[] = {"車名","価格","月日"}; String data[][] = { {"乗用車","1200円","10-01"}, {"トラック","2400円","10-05"}, }; //コンポーネントの作成 lb = new JLabel("いらっしゃいませ"); tb = new JTable(data,colname); sp = new JScrollPane(tb); //コンテナへ追加 cnt.add(lb,BorderLayout.NORTH); cnt.add(sp,BorderLayout.CENTER); } } -------------------------------------------------

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんばんは。  2列目のコラムに右寄せ用のDefaultCellRendererを設定してやればいいと思います。  ↓こんな感じでしょうか。 import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class Sample3 extends JApplet {   private JLabel lb;   private JTable tb;   private JScrollPane sp;      public void init()   {     //コンテンツペインの取得     Container cnt = getContentPane();          String colname[] = {"車名","価格","月日"};     String data[][] = {     {"乗用車","1200円","10-01"},     {"トラック","2400円","10-05"},     };          //コンポーネントの作成     lb = new JLabel("いらっしゃいませ");     tb = new JTable(data,colname);     sp = new JScrollPane(tb);          TableColumnModel cm = tb.getColumnModel();     TableColumn column = cm.getColumn(1);     DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();     renderer.setHorizontalAlignment(SwingConstants.RIGHT);     column.setCellRenderer(renderer);          //コンテナへ追加     cnt.add(lb,BorderLayout.NORTH);     cnt.add(sp,BorderLayout.CENTER);   } }

cocomonchi
質問者

お礼

PecoPlus様 ご回答ありがとうございました! 無事右寄せする事ができたのですが いまいちまだ理解できてません(^^; もう少し勉強してみます!

関連するQ&A

  • アプレットでのキー入力

    具体的にいうと以下のアプレットを実行した場合に矢印キーを入力しても反応(上、下、、、が表示されない。)がないのです。 一度アプレット自体をクリックしても反応がありません。 何が悪いのでしょうか?よろしくお願いします。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class practice extends JApplet { private JLabel lb1,lb2; public void init() { Container cnt = getContentPane(); lb1 = new JLabel("矢印キーでお選びください。"); lb2 = new JLabel(); cnt.add(lb1,BorderLayout.NORTH); cnt.add(lb2,BorderLayout.SOUTH); addKeyListener(new practiceKeyListener()); } class practiceKeyListener extends KeyAdapter { public void KeyPressed(KeyEvent e) { String str; int k = e.getKeyCode(); switch(k){ case KeyEvent.VK_UP: str = "上";break; case KeyEvent.VK_DOWN: str = "下";break; case KeyEvent.VK_LEFT: str = "左";break; case KeyEvent.VK_RIGHT: str = "右";break; default: str = "他のキー"; } lb2.setText(str + "ですね。"); } } }

    • ベストアンサー
    • Java
  • javaで2パネルにテーブルデーターを表示

    今日は! javaの初心者で、初心者なりに、フレームに2個のパネルを作成し、各パネルに同じ テーブルデーターを表示するコードを作ってみましたが、旨く行きません。 下記の添付コードで、不具合点の改造箇所をお教え頂けますと大変助かります。 //================================== package packageA; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; public class JTableTest2 extends JFrame{ public static void main(String[] args){ JTableTest2 test = new JTableTest2("JTableTest2"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } JTableTest2(String name){ setBounds( 0, 0, 300*2, 140*2); setTitle(name); String data[][] = { //テーブルデータを作る {"田辺太郎","89","79","100","100"}, {"山田大助","68","55","72","100"}, {"佐藤恵美","78","69","81","100"} }; //列名の配列 String title[] = {"名前","数学","英語","国語","音楽"}; JTable table = new JTable(data,title); //テーブルデータと列名でテーブルを作る JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 80)); p1.add(sp); //JPanelにJScrollPaneを結合する p2.add(sp); //JPanelにJScrollPaneを結合する getContentPane().add(p1, BorderLayout.WEST); getContentPane().add(p2, BorderLayout.EAST); } } 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • javaのJTableのupdateについて

    javaのJTableについて質問します。 Q1)下記のコードは元のtabledataをupdateしていますが、updateの内容を元のtabledataに 反映する設定はありますか(元のtabledataの内容は変化します)? =========================================== import javax.swing.*; import java.awt.event.*; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.table.DefaultTableModel; public class SwingTest extends JFrame{ private String[][] tabledata = { {"日本", "3勝", "0敗", "1分"}, {"クロアチア", "3勝", "1敗", "0分"}, {"ブラジル", "1勝", "2敗", "1分"}, {"オーストラリア", "2勝", "2敗", "0分"}}; private String[] tabledata2 = {"イギリス", "2勝", "0敗", "2分"}; private String[] columnNames = {"COUNTRY", "WIN", "LOST", "EVEN"}; public static void main(String[] args){ SwingTest test = new SwingTest("SwingTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } SwingTest(String title){ setTitle(title); setBounds( 10, 10, 300, 200); DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0); JTable table = new JTable(tableModel); for(int i = 0 ; i < 4 ; i++){ tableModel.addRow(tabledata[i]); } tableModel.setValueAt("2勝", 1, 1); tableModel.setValueAt("2敗", 1, 2); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 90)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • javaのpanelが表示されません

    下記のプログラムを作ったんですが、eclipseで実行するとフレームは表示されますが、空のフレームのような状態で、panelやボタンなどは表示されません。mainとは別のクラスで作成してるからなんでしょうか?よろしくお願いします。 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Table0 { public static void main(String[] args) { new Frame0(); } } class Frame0{ JFrame frame; JPanel panel; JScrollPane jsp; JTable table; DefaultTableModel dtm; public Frame0(){ frame=new JFrame("table"); frame.setBounds(30, 30, 300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); table=new JTable(8,5); jsp=new JScrollPane(table); jsp.setPreferredSize(new Dimension(250, 70)); panel=new JPanel(); panel.add(jsp); Container c=frame.getContentPane(); c.add(panel,BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • Javaのレイアウトマネージャについてです

    ある課題で、この図のようなレイアウトになければいけないとの指定があるのでやってるんですがhttp://www.dotup.org/uploda/www.dotup.org3826.jpg.html 選択演算子の下のラベル(選択した演算子を表示するもの)がうまくレイアウトできません。ここまでは何とかたどり着いたんですが・・ http://www.dotup.org/uploda/www.dotup.org3828.jpg.html 自分が作ったソースはこちらです。 lb[0] = new JLabel("選択演算子"); lb[1] = new JLabel(" "); lb[2] = new JLabel("0"); lb[3] = new JLabel("です"); lb[0].setHorizontalAlignment(JLabel.LEFT); lb[0].setVerticalAlignment(JLabel.TOP); lb[1].setFont(new Font("Helvetica",Font.BOLD,20)); lb[1].setBorder(new EtchedBorder()); lb[1].setHorizontalAlignment(JLabel.LEFT); lb[1].setVerticalAlignment(JLabel.BOTTOM); lb[2].setFont(new Font("Helvetica",Font.BOLD,20)); lb[2].setBorder(new EtchedBorder()); lb[2].setHorizontalAlignment(JLabel.CENTER); lb[3].setHorizontalAlignment(JLabel.CENTER); bt_en[0] = new JButton("+"); bt_en[1] = new JButton("-"); bt_en[2] = new JButton("="); bt_en[3] = new JButton("C"); bt_en[4] = new JButton("AC"); cnt.setLayout(new GridLayout(3,1)); pn[0].setLayout(new BorderLayout()); pn[1].setLayout(new GridLayout(4,3)); pn[2].setLayout(new FlowLayout()); pn[0].add(lb[0],BorderLayout.WEST); pn[0].add(lb[1],BorderLayout.SOUTH); pn[0].add(lb[2],BorderLayout.CENTER); pn[0].add(lb[3],BorderLayout.EAST); どのようにすればいいのか教えていただきたいです。 ちなみに使っている教科書は「やさしいJava活用編」です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのフレームにサイズがセットされてない?

    前回、http://okwave.jp/qa/q8069621.htmlで質問しました。 回答をもとにframe.setvisible(true)をコンストラクタの最後にするとうまくいき回答を締め切ったんですが・・・。 しかし、mainメソッドにframe.setvisible(true)を書くとフレームのタイトル部分だけとなり、 サイズがセットされないまま実行したときと同じようになってしまいます。 なぜでしょう?よろしくお願いします。 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Table0{ public static void main(String[] args) { Frame0 test=new Frame0(); test.setVisible(true); } } class Frame0 extends JFrame{ JFrame frame; JPanel panel; JScrollPane jsp; JTable table; DefaultTableModel dtm; public Frame0(){ frame=new JFrame("table"); frame.setBounds(30, 30, 300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); table=new JTable(8,5); jsp=new JScrollPane(table); jsp.setPreferredSize(new Dimension(250, 70)); panel=new JPanel(); panel.add(jsp); Container c=frame.getContentPane(); c.add(panel,BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • javaアプレットについて質問です

    本の通りにソースを記入し、コンパイラしました。 その後実行したら Exception in thread"main"java.lang.NoSuchMethodError:main とコマンドプロンプトに表示されました。 何が原因ですか? 因みに下記がソースコードです import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Sample13 extends JApplet { private JLabel lb; private JTextField tf; public void init() { //コンポーネントの作成 lb = new JLabel("お選びください。"); tf = new JTextField(); //コンテナへ追加 add(lb, BorderLayout.NORTH); add(tf, BorderLayout.SOUTH); //リスナの登録 tf.addActionListener(new SampleActionListener()); } //リスナクラス class SampleActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { JTextField tmp = (JTextField) e.getSource(); lb.setText(tmp.getText() + "ですね。"); } } }

  • Radioボタンの割込み処理

    毎度、お世話になります。 Radioボタンの割込み処理について、お教えください。 コード中の『se[0].addChangeListener(this)』にて、Radioボタンをクリックしますと 割込みが発生し、正常に動作します。 Q1)このthisを他のワードに変更できないでしょうか? 理由:他のプログラムで、thisと記述した瞬間に、エラーcheckに引っかかります。 nullの場合は、OKですが、割込みが発生しません。 以上、宜しくお願いします。 ============== import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; class JRadioButtonTestB extends JFrame implements ChangeListener { JRadioButton se[]=new JRadioButton[2]; JLabel lb1, lb2; JRadioButtonTestB() { lb1 = new JLabel(); lb2 = new JLabel(); Container cont = getContentPane(); cont.setLayout(new BorderLayout()); //性別================================ se[0] = new JRadioButton("男性"); se[1] = new JRadioButton("女性"); se[0].addChangeListener(null); //<----問題点 se[1].addChangeListener(null); // JPanel pSex = new JPanel(); pSex.setBackground(Color.cyan); pSex.setLayout(new FlowLayout()); pSex.add(new JLabel("性別")); pSex.add(se[0]); pSex.add(se[1]); ButtonGroup bgsex = new ButtonGroup(); bgsex.add(se[0]); bgsex.add(se[1]); JPanel kaku = new JPanel(); kaku.setBackground(Color.green); kaku.setLayout(new GridLayout(3,2)); kaku.add(new JLabel("確認")); kaku.add(new JLabel(" ")); kaku.add(new JLabel("性別")); kaku.add(lb1); cont.add("North",pSex); cont.add("South",kaku); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JRadioButtonTestB"); setSize(320, 200); setVisible(true); } public void stateChanged(ChangeEvent e) { if(se[0].isSelected()) lb1.setText("男性"); if(se[1].isSelected()) lb1.setText("女性"); } public static void main(String[] args) { new JRadioButtonTestB(); } } //===

    • ベストアンサー
    • Java
  • Javaのソースについて質問です・・・

    Javaのソースについて質問です・・・ Javaで「JCheckbox」クラスを使い、選ばれたら、『「」が選ばれました。』とテキストが表示され、 チェックが解除されたら、『選ぶのをやめました。』と表示されるようにしたいのですが、 そのソースについて質問です。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class sample11 extends JApplet {   private JLabel lb;   private JPanel pn;   private JCheckBox ch1,ch2,tmp;   public void init()   {     //コンポーネントの作成     lb=new JLabel("選んでください");     pn=new JPanel();     ch1=new JCheckBox("A");     ch2=new JCheckBox("B");     //コンテナへの追加     pn.add(ch1);     pn.add(ch2);     add(lb,BorderLayout.NORTH);     add(pn,BorderLayout.SOUTH);     //リスナの登録     ch1.addItemListener(new SampleItemListener());     ch2.addItemListener(new SampleItemListener());   }   //リスナクラス   class SampleItemListener implements ItemListener   {      public void itemStateChanged(ItemEvent e)      {        if(e.getStateChange()==ItemEvent.SELECTED){          tmp=(JCheckbox) e.getSource();          lb.setText(tmp.getText()+"を選びました。");        } else if(e.getStateChange()==ItemEvent.DESELECTED) {          tmp=(JCheckbox) e.getSource();          lb.setText(tmp.getText()+"をやめました。");        }      }   } } ・なぜ、チェックボックスが表示されるわけでもないのにリスナクラス内で、  オブジェクトを作成しなければならないのか? ・(JCheckbox)とはJCheckboxのオブジェクトを作成するという記述を省略したものなのか? ・なぜ、「tmp」を介して「lb」にテキストをセットしなければならないのか? 上の三つの点が分りません。 説明お願いしますorz .

    • ベストアンサー
    • Java
  • javaでスタート画面を作っていて困っています。

    現在javaでゲームのスタート画面を作っているのですが、パネルが透過されずに困っています。 プログラムソースは import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.*; import java.awt.Font; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; class Start最新版 extends JFrame{ public static void main(String args[]){ Start最新版 frame = new Start最新版("タイトル"); frame.setVisible(true); } Start最新版(String title){ setTitle(title); setBounds(10, 10, 1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setOpaque( false ); ImageIcon icon1 = new ImageIcon("Start.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); p.add(label1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); JButton button1 = new JButton("ゲームを始める"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel n = new JPanel(); n.setOpaque(false); n.setLayout(new BoxLayout(n, BoxLayout.Y_AXIS)); n.add(Box.createRigidArea(new Dimension(290,30))); n.add(button1); となっています。「ゲームを始める」ボタンだけを残して、周りのパネルを透過して画像を表示させたいのですが、うまくいきません!解決方法をご存知の方どうか教えていただきたいです!よろしくお願いします。

専門家に質問してみよう