テーブルを作成し、そのテーブルにクリップボード データ (Excel からコピーされる) を表示するように設計されたコードをいくつか書きました。
そのため、メニューバーの「Excelからインポート」に1つのメニュー項目があり、クリックするとクリップボードにあるExcelデータがすべて取得され、下のパネルに表が表示されます。
また、(テーブルが表示される) パネルは、下に表示されるまったく別のパネルにつながる可能性がある将来のメニュー ボタンに応じて切り替えることができるように記述しました。
だから私はインターフェース(initメソッドを含む)DisplayExcelData
を実装するこのクラスを持っています。MainPage
メニュー項目がクリックされると、拡張されたメニューバー クラスでアクション イベントが発生し、MainPage
そのメニュー項目に関連付けられたインターフェイスがコンテンツ ペインにフィードされます (この場合DisplayExcelData
は、[Excel からインポート] がクリックされたときにコンテンツ ペインにフィードされます)。 init が呼び出され、コンテンツ ペインに追加されます。
プログラムが起動し、何も選択されていない場合、デフォルトでInitialScreen
クラスが設定されます。
DisplayExcelData クラスは次のようになります。
public class DisplayExcelData implements MainPageIF
{
private ExcelTableModel tm = null;
private Table table = new Table();
private JPanel thisPanel = new Panel();
public DisplayExcelData ()
{
super();
thisPanel.setLayout(new BorderLayout());
}
@Override
public void init()
{
//the test data I have been using is only 2 columns, so I'm just using
//these as test columns at the moment
tm = new ExcelTableModel("First, Second");
table.setModel(tm);
thisPanel.add(table, BorderLayout.CENTER);
}
@Override
public JPanel getPanel()
{
return thisPanel;
}
}
ExcelTableModel はクリップボードのデータを取得し、それを TableModel に変換します
次に、contentPane で、
public MainFrame()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(50, 50, 800, 500);
compInit();
}
private void compInit()
{
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
contentPane.setBackground(new Color(0,0,0));
setContentPane(contentPane);
//mf is the menu bar which is a class variable
MenuBar menuBar = mf.getMenuBar();
setPanelFromMenuBar();
setMenuBar(menuBar);
}
private void setPanelFromMenuBar()
{
MainPageIF page = mf.getPage();
if (page == null)
{
page = new InitialScreen();
}
page.init();
//mainPanel is a class variable
mainPanel = page.getPanel();
mainPanel.setVisible(true);
contentPane.add(mainPanel, BorderLayout.CENTER);
}
@Override
public void actionPerformed(ActionEvent evt)
{
Object source = evt.getSource();
if (source instanceof MenuItem)
{
contentPane.removeAll();
setPanelFromMenuBar();
getContentPane().doLayout();
update(getGraphics());
}
}
コードを変更して、DisplayExcelData
クラスを初期画面としてプログラムを起動すると、機能します...クリップボードにあるExcelデータを取得し、画面上の表に見事に表示します...しかし、私はそれを主張しますをクリックするとこの表が表示されMenuItem
ますが、空白の画面が表示されるだけです。デバッグして、何が入っているかを確認すると... Excelデータに含まれるmainPanel
正しいものが含まれています...しかし、表示されません...理由については髪の毛を引き裂いています...TableModel
JTable
誰でも助けることができますか?