import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Background {
JFrame frame = new JFrame();
JMenuBar menubar;
JTextArea field;
JMenuItem black, white;
Background(){
frame.setLayout(new GridLayout(1,2));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(600,200));
JPanel jp1 = new JPanel();
jp1.setBackground(Color.BLACK);
field = new JTextArea();
field.setLayout(new BoxLayout(field, BoxLayout.Y_AXIS));
for(String m : message){
field.add(new JLabel(m));
}
menubar = new JMenuBar();
frame.setJMenuBar(menubar);
JMenu changecolor = new JMenu("change color");
menubar.add(changecolor);
black = new JMenuItem("black");
white = new JMenuItem("black");
black.addActionListener(new FarbListener(frame, Color.WHITE));
changecolor.add(black);
changecolor.add(white);
frame.add(field);
frame.add(jp1);
frame.setVisible(true);
}
class FarbListener implements ActionListener{
private final JFrame frameToWorkOn;
private final Color colorToSet;
FarbListener(JFrame frameToWorkOn, Color colorToSet){
this.frameToWorkOn = frameToWorkOn;
this.colorToSet = colorToSet;
}
public void actionPerformed(ActionEvent e) {
frameToWorkOn.setBackground(colorToSet);
}
}
public static void main(String[]args){
new Background();
}
}GUI - ActionListener의 생성자, 어떻게 작동 시키는가?
나는 GUI를 creat에와 JMenuItems에 ActionListener를 추가해야합니다.
GUI는 정상적으로 작동하지만, ActionListener가 올바르게 작동하는 데 문제가 있습니다.
코드를 변경할 수 없습니다. (ActionListener를 구현해야하며 생성자를 작성해야합니다.)
"검은 색"MenuItem을 누르면 배경색이 변경됩니다.
"실제로 듣기"란 무엇을 의미합니까? 그걸로 불려지는 것 아닌가요? 'actionPerformed'의 주장을 들여다 보았습니까? – ChiefTwoPencils
자바 명명 규칙에 대해 읽어보십시오. 클래스 이름은 UpperCase를 시작합니다. 항상. – GhostCat
네, 선생님, 내가 쓰지 않을 공간에 대한 questionmarks 표시 ... 만약 내가 jp1.setBackground() 행동에 작성된 공연을 나에게 "클래스 jp1 만들기"를 제공 .... 나는 그것을 얻지 않는다, 생성자로 무엇을 써야합니까? – klarz