1
我已經爲JPanel構建了一個包含多個JButton的類。在這個類中,我想構造另一個JPanel,JLabel將根據actionPerformed第一個JPanel的JButtons。最後,我想在同一個Jframe上添加這兩個面板。所有這些都可以在第一個面板的類中完成嗎?否則,對於這個問題,這是一個更好的方法嗎?更改面板的JLabel取決於同一個Jframe中另一個面板的Jbutton
我已經爲JPanel構建了一個包含多個JButton的類。在這個類中,我想構造另一個JPanel,JLabel將根據actionPerformed第一個JPanel的JButtons。最後,我想在同一個Jframe上添加這兩個面板。所有這些都可以在第一個面板的類中完成嗎?否則,對於這個問題,這是一個更好的方法嗎?更改面板的JLabel取決於同一個Jframe中另一個面板的Jbutton
是的,你可以。一種方法,你可以做到這一點是與匿名內部類(節省擊鍵):
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);
}
}
當然。我不知道爲什麼這不應該工作。 因爲我不知道你真正的問題在哪裏答案只是:是的,這可以在你的第一類 – 2014-12-07 23:24:52
所有內容完成是的,但問題變成了,如果你... – MadProgrammer 2014-12-07 23:46:05
謝謝你們。我只是對報表的編寫順序感到好奇。 – 2014-12-09 08:29:55