Excelfile を読み取り、jpanel 内にグラフを含むフレームを作成するクラスがあります。jmenuitem の actionlistener を介してこのクラスを呼び出します。次に、同じファイルを開く同じクラスを呼び出す別のjmenuitemがありますが、別のExcelシートを読み取り、別のグラフを提供します(クラスで変更される唯一の文字列です)。これらの jmenitem を持つ jmenubar は、プログラムが開始される jframe に属します。新しいjframeカードレイアウトに追加されるグラフを作成するjmenuitemsをクリックするたびに、それらをロールできるかどうかを知りたいです。前もって感謝します
これは、jmenuitem がクリックされたときに jframe でグラフを開くために現在使用しているコードです。
public class startup extends JFrame { // creates a jframe with some stuff and the jmenubar
public void menu() {
...
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event2) {
new Thread(new Runnable() {
@Override
public void run() {
new ReadExcel();
ReadExcel.excel(".xls", 0); // this jmenuitem invokes the class to read the excelfile sheet 0
graphgen.main(null);
}
}).start();
}
});
subsubmenu1.add(menuItem);
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event2) {
new Thread(new Runnable() {
@Override
public void run() {
new ReadExcel();
ReadExcel.excel(".xls", 1); // this jmenuitem invokes the class to read the excelfile sheet 1
graphgen.main(null);
}
}).start();
}
});
subsubmenu1.add(menuItem);
....
}
public static void main(String[] args)
{
GUIquery frame = new GUIquery();
p.add(graphComponent, BorderLayout.CENTER);
frame.setLayout(new BorderLayout());
frame.add(p, BorderLayout.CENTER);
frame.setJMenuBar(GUIquery.createMenuBar());
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setSize(1600, 1200);
frame.setVisible(true);
}
}
readexcel クラスは、Excelfile の Excel シートを読み取るだけで、graphgen クラスで処理される配列リストを返します。
public class graphgen extends JFrame {
public graphgen() {
super("Results");
gen();
}
public void gen(){
//creates the graphcomponent
getContentPane().add(graphComponent);
add(graphComponent);
}
public static void main(String[] args)
{
graphgen frame = new graphgen();
p2.add(graphComponent, BorderLayout.CENTER);
frame.add(p2, BorderLayout.CENTER);
frame.pack();
frame.setResizable(true);
frame.setSize(1600, 1200);
frame.setVisible(true);
}