そこで、趣味として、この単純な株価チャート GUI の開発に取り組んできました。この GUI は、YahooFinance からチャートを取得し、それらをタブ付きの JPanel に表示します。タブにユーザー定義の株式などを入力することができました。ただし、さまざまなチャートの側面 (ボール バンド、移動平均など) を照会できるいくつかのボタンを開発し、この更新チャートでパネルを「再描画」できるようにしたいと考えています。
問題: 以下の方法で作成した個々のパネルにアクセスする方法がわかりません。パネル (i=1 のときに作成された panel1 など) を選択し、ActionListener で更新できるようにする必要があります。後でアクセスしてラベルを再描画できるように、Java がこれらのパネルをループ内でどのように定義するのか、本当に疑問に思っています。乾杯。
public static void urlstock(String options,final String[] s, final JFrame f,final
JTabbedPane tpane) throws IOException{
for(int i=0;i<s.length;i++){
String path = "http://chart.finance.yahoo.com/z?s="+s[i]+options;
URL url = new URL(path);
BufferedImage image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
JPanel panel=new JPanel();
tpane.addTab(s[i],null, panel);
panel.add(label);
}
panel
だから私はボタンを押すと合図するこれを試しましたが、私の理解を超えた理由で変数として認識されないため、機能しません:
public void actionPerformed(ActionEvent e)
{ //Execute when button is pressed
System.out.println("MAButton");
tpane.getComponentAt(1);
tpane.remove(panel);
//Container.remove();
String path = "http://chart.finance.yahoo.com/z?s=GOOG&t=7m&z=l&q=l&a=ss,sfs";
URL url = new URL(path);
BufferedImage image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
JPanel panel=new JPanel();
tpane.setComponentAt(1,panel);
panel.add(label);
}