Chương trình của tôi có nhiệm vụ tạo các biểu tượng tròn trong cuộc trò chuyện. Tôi có ba nút, mỗi nút đại diện cho màu của biểu tượng tôi muốn tạo. Vì vậy, nếu tôi nhấp vào các nút khác nhau 10 lần, chương trình của tôi sẽ tạo ra 10 vòng tròn có màu sắc khác nhau. Đây là mã của tôi, được chia thành 2 lớp:
nhập java.util.*;
nhập java.awt.*;
import java.awt.event.*;
nhập javax.swing.*;
lớp công khai CompositeIcon mở rộng JFrame {
biểu tượng CircleIcon tĩnh;
public static void main(String[] args) {
khung JFrame cuối cùng = JFrame mới();
nhãn JLabel cuối cùng = JLabel mới();
JButton redBut = JButton mới("Đỏ");
JButton blueBut = JButton mới("Blue");
JButton greenBut = JButton mới("Xanh");
biểu tượng = CircleIcon mới();
redBut.addActionListener(ActionListener mới() {
public void actionPerformed(sự kiện ActionEvent) {
icon.addIcon(CircleIcon mới(50, Color.red));
label.setIcon(icon);
frame.repaint();
frame.pack();
}
});
blueBut.addActionListener(ActionListener mới() {
public void actionPerformed(sự kiện ActionEvent) {
icon.addIcon(CircleIcon mới(50, Color.blue));
label.setIcon(icon);
frame.repaint();
frame.pack();
}
});
greenBut.addActionListener(ActionListener mới() {
public void actionPerformed(sự kiện ActionEvent) {
icon.addIcon(CircleIcon mới(50, Color.green));
label.setIcon(icon);
frame.repaint();
frame.pack();
}
});
frame.setLayout(FlowLayout mới());
label.setPreferredSize(New Dimension(400, 200));
frame.add(redBut);
frame.add(blueBut);
frame.add(greenBut);
frame.add(nhãn);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Và các lớp khác của tôi:
nhập java.util.*;
nhập java.awt.*;
nhập javax.swing.*;
lớp công khai CircleIcon triển khai Biểu tượng {
biểu tượng ArrayList riêng tư;
chiều rộng int riêng tư;
chiều cao int riêng tư;
CircleIcon công khai() {
biểu tượng = new ArrayList();
}
public void addIcon(Biểu tượng biểu tượng) {
biểu tượng.add (biểu tượng);
chiều rộng += icon.getIconWidth();
int iconHeight = icon.getIconHeight();
nếu (chiều cao < iconHeight)
chiều cao = biểu tượng Chiều cao;
}
công khai int getIconHeight() {
chiều cao trở lại;
}
công khai int getIconWidth() {
chiều rộng trở lại;
}
public void PaintIcon(Thành phần c, Đồ họa g, int x, int y) {
for (Biểu tượng biểu tượng : biểu tượng) {
icon.paintIcon(c, g, x, y);
x += icon.getIconWidth();
}
}
}
Tại thời điểm này, chương trình của tôi thậm chí không biên dịch được, vấn đề nằm ở lớp CompositeIcon, đối với "nút màu đỏ", trong icon.addIcon(CircleIcon mới(50, Color.red));
, và điều tương tự cũng đúng với màu xanh lam và xanh lục.
Tôi đã kiểm tra mã của bạn. Lớp CircleIcon của bạn thiếu hàm tạo. Thêm phần này vào lớp biểu tượng vòng tròn của bạn.
public CircleIcon(int number, Color awtColor) {
// làm bất cứ điều gì ở đây
}
Tôi là một lập trình viên xuất sắc, rất giỏi!