2014-12-07 61 views
1

我已經爲JPanel構建了一個包含多個JButton的類。在這個類中,我想構造另一個JPanel,JLabel將根據actionPerformed第一個JPanel的JButtons。最後,我想在同一個Jframe上添加這兩個面板。所有這些都可以在第一個面板的類中完成嗎?否則,對於這個問題,這是一個更好的方法嗎?更改面板的JLabel取決於同一個Jframe中另一個面板的Jbutton

+1

當然。我不知道爲什麼這不應該工作。 因爲我不知道你真正的問題在哪裏答案只是:是的,這可以在你的第一類 – 2014-12-07 23:24:52

+0

所有內容完成是的,但問題變成了,如果你... – MadProgrammer 2014-12-07 23:46:05

+0

謝謝你們。我只是對報表的編寫順序感到好奇。 – 2014-12-09 08:29:55

回答

0

是的,你可以。一種方法,你可以做到這一點是與匿名內部類(節省擊鍵):

import java.awt.BorderLayout; 
import java.awt.event.*; 
import javax.swing.*; 

public class Foo { 
    JLabel one; 
    JLabel two; 

    public static void main(String[] args) { 
     (new Foo()).go(); 
    } 

    public void go() { 
     JFrame frame = new JFrame("Test"); 

     // Panel with buttons 
     JPanel buttonPanel = new JPanel(); 
     JButton changeOne = new JButton("Change One"); 
     changeOne.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       one.setText("New text for one"); 
      } 
     } 
     buttonPanel.add(changeOne); 
     JButton changeTwo = new JButton("Change Two"); 
     changeTwo.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       two.setText("New text for two"); 
      } 
     } 
     buttonPanel.add(changeTwo); 
     frame.add(buttonPanel, BorderLayout.NORTH); 

     // Panel with labels 
     JPanel labelPanel = new JLabel(); 
     one = new JLabel("One"); 
     labelPanel.add(one); 
     two = new JLabel("Two"); 
     labelPanel.add(two); 

     // Set up the frame 
     frame.add(labelPanel, BorderLayout.SOUTH); 
     frame.setBounds(50, 50, 500, 500); 
     frame.setDefaultCloseAction(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
相關問題