我有这段代码:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
public class ColorSliders extends JFrame implements ChangeListener {
ColorPanel canvas = new ColorPanel();
JSlider red = new JSlider(0, 255, 255);
JSlider green = new JSlider(0, 255, 0);
JSlider blue = new JSlider(0, 255, 0);
public ColorSliders() {
super("Color Slide");
setSize(270, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
red.setMajorTickSpacing(50);
red.setMinorTickSpacing(10);
red.setPaintTicks(true);
red.setPaintLabels(true);
red.addChangeListener(this);
green.setMajorTickSpacing(50);
green.setMinorTickSpacing(10);
green.setPaintTicks(true);
green.setPaintLabels(true);
green.addChangeListener(this);
blue.setMajorTickSpacing(50);
blue.setMinorTickSpacing(10);
blue.setPaintTicks(true);
blue.setPaintLabels(true);
blue.addChangeListener(this);
JLabel redLabel = new JLabel("Red: ");
JLabel greenLabel = new JLabel("Green: ");
JLabel blueLabel = new JLabel("Blue: ");
GridLayout grid = new GridLayout(4, 1);
FlowLayout right = new FlowLayout(FlowLayout.RIGHT);
setLayout(grid);
JPanel redPanel = new JPanel();
redPanel.setLayout(right);
redPanel.add(redLabel);
redPanel.add(red);
add(redPanel);
JPanel greenPanel = new JPanel();
greenPanel.setLayout(right);
greenPanel.add(greenLabel);
greenPanel.add(green);
add(greenPanel);
JPanel bluePanel = new JPanel();
bluePanel.setLayout(right);
bluePanel.add(blueLabel);
bluePanel.add(blue);
add(bluePanel);
add(canvas);
setVisible(true);
}
public void stateChanged(ChangeEvent event) {
JSlider source = (JSlider) event.getSource();
if (source.getValueIsAdjusting() != true) {
Color current = new Color(red.getValue(),
green.getValue(),
blue.getValue());
canvas.changeColor(current);
canvas.repaint();
}
}
public Insets getInsets() {
Insets border = new Insets(45, 10, 10, 10);
return border;
}
public static void main(String[] arguments) {
ColorSliders cs = new ColorSliders();
}
}
class ColorPanel extends JPanel {
Color background;
ColorPanel() {
background = Color.red;
}
public void paintComponent(Graphics comp) {
Graphics2D comp2D = (Graphics2D) comp;
comp2D.setColor(background);
comp2D.fillRect(0, 0, getSize().width, getSize().height);
}
void changeColor(Color newBackground) {
background = newBackground;
}
}
为什么它在Eclipse中定义同一类中的2个类?
答案 0 :(得分:3)
另一个类中没有任何类,这个源代码分别有两个类。我们可以在单个源代码中编写许多类。易于运输可能是原因。请注意,在同一源代码中编写多个类时,只能定义一个公共类,其名称应与源代码的文件名匹配。
答案 1 :(得分:0)
简短的回答是,在单个源文件中拥有多个顶级类是反模式,即使可以,也应该避免这样做。