3

私はファイルから情報を読んでいて、それをテーブルに置いています。このためのコードは私のものではありませんが、まさに私が必要としているものなので、私はそれを維持し、私にとって役立つようにしようとしています。追加する必要があるのは5〜6個のボタンとそれらの機能ですが、操作にまったく慣れていSWINGないため、既存のコードを維持し、ボタンを適切な位置に追加することで、両方を完了するのに非常に苦労しています。

これは私のファイルです。最初の部分はテーブルが作成される場所であり、1つのボタンのコードを含めようとします。

public class DataFileTable extends JPanel {
  public DataFileTable(String dataFilePath) {
    JTable table;
    DataFileTableModel model;
    Font f;

    f = new Font("SanSerif",Font.PLAIN,24);
    setFont(f);
    setLayout(new BorderLayout());

    model = new DataFileTableModel(dataFilePath);

    table = new JTable();
    table.setModel(model);
    table.createDefaultColumnsFromModel();
    //Try to add button
    JButton button = new JButton("First Button");
    button.setSize(80,20);
    button.setVerticalAlignment(SwingConstants.BOTTOM);
    button.setHorizontalAlignment(SwingConstants.RIGHT);
    //End button part
    JScrollPane scrollpane = new JScrollPane(table);
    scrollpane.add(button);//Add button 
    add(scrollpane);

    }

そして2番目の部分は主にmain機能です:

public Dimension getPreferredSize(){ 

    return new Dimension(400, 300);
    }

 public static void main(String s[]) {
    JFrame frame = new JFrame("Data File Table");
    DataFileTable panel;

    panel = new DataFileTable("customers.dat");

    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.setForeground(Color.black);
    frame.setBackground(Color.lightGray);
    frame.getContentPane().add(panel,"Center");

    frame.setSize(panel.getPreferredSize());
    frame.setVisible(true);
    frame.addWindowListener(new WindowCloser());
    }
 }

class WindowCloser extends WindowAdapter {
 public void windowClosing(WindowEvent e) {
   Window win = e.getWindow();
   win.setVisible(false);
   System.exit(0);
    }
}

これが私がこのコードで得たもののPrintScreenです:

ここに画像の説明を入力してください

私は最高のルックアンドフィールを探していませんが、現在のコードを保持し、下部のどこかにボタンを追加できれば本当に素晴らしいでしょう。を使用してフレームフォームにボタンを直接追加しようとしましたmainframe.add(button)、サイズを設定しても、ボタンがすべてのスペースを占有し、テーブルが表示されなくなりました。

4

5 に答える 5

7

次のことはできません。

JScrollPane scrollpane = new JScrollPane(table);
scrollpane.add(button);//Add button 
add(scrollpane);

スクロールペインには、テーブルを表示するビューポートを1つだけ含めることができるためです。

私は提案します:

add(scrollpane, BorderLayout.CENTER );

JToolBar toolbar = new JToolBar();
toolbar.add( button1 );
toolbar.add( button2 );
toolbar.add( button3 );
...
add( toolbar, BorderLayout.NORTH );

JToolBarのドキュメントを参照してください

于 2012-10-31T15:11:02.440 に答える
3

スイングレイアウトマネージャーを使用する:http://zetcode.com/tutorials/javaswingtutorial/swinglayoutmanagement/

2つのパネルを使用することをお勧めします。1つはテーブル用で、もう1つは上記のような適切なレイアウトを使用したボタン用です。

于 2012-10-31T15:07:28.343 に答える
2

set[Mininum|Maximum|Preferred]Size()問題は、コンポーネントのメソッドを呼び出す必要がないことですSwing(LayoutManagerがヒントを無視し、最終的にレイアウト自体を壊す可能性がある場合、これらのメソッドは効果がありません)。

これは、の子のSwing適切なサイズを確立する唯一の責任はであるためです。詳細な説明については、このスレッドを参照するか、Oracleのチュートリアルを参照してください。ComponentLayoutManager

コンポーネントを適切にレイアウトする必要がある場合は、親Componentに右側を追加しますLayoutManager

于 2012-10-31T15:08:07.953 に答える
1

私はあなたにたくさんの髪と時間を節約します。

スイングを操作するときは、GridBagLayoutよりも先を見るべきではありません。

私を信じて、GridBagの使い方を知ってください。それは複雑に見えます、それは壊れます。しかし、それはあなたがそれを使うことになるかもしれないので有用で学ぶ価値がある唯一のレイアウトマネージャーです.....かなりたくさん。

したがって、覚えておいてください-http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

于 2012-10-31T15:11:02.000 に答える
0

GUIをすばやく作成する方法が必要な場合は、JavaSwing要素をドラッグアンドドロップする機能を提供するNetbeansGUIコードジェネレーターを使用することをお勧めします。または、Eclipse用のWindowBuilderプラグインをインストールすることもできます。

これらの「コードジェネレーター」はやや眉をひそめていますが、自分でフォーマットする方法を学ぶ必要がないため、学習するときに役立ちます。

実際、これらのWYSIWYGエディターは私にHTMLを教えてくれました。:)

于 2012-10-31T20:37:05.733 に答える