【发布时间】:2018-09-19 23:55:27
【问题描述】:
这是我的块类:
public class Block extends JComponent {
public int width, height;
public Color colour;
public Block( int width, int height, Color colour) {
super();
setSize(new Dimension(width, height));
setPreferredSize(new Dimension(width, height));
setBackground(colour);
this.width = width;
this.height = height;
this.colour = colour;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(colour);
g.fillRect(0, 0, width, height);
}
}
还有我的球类:
public class Ball extends JComponent {
public int width, height;
public Color colour;
public Ball(int width, int height, Color colour) {
super();
setSize(new Dimension(width, height));
setPreferredSize(new Dimension(width, height));
setBackground(colour);
this.width = width;
this.height = height;
this.colour = colour;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(colour);
g.fillOval(0, 0, width, height);
}
}
这是我的主要课程:
public class Main extends JPanel {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setContentPane(new Main());
frame.setSize(new Dimension(1000, 1000));
frame.setPreferredSize(new Dimension(1000, 1000));
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Main() {
JComboBox<String> shapes = new JComboBox(new String[]{"Square", "Oval"});
JSpinner width = new JSpinner();
SpinnerNumberModel widthModel = new SpinnerNumberModel();
widthModel.setMinimum(1);
widthModel.setMaximum(200);
width.setModel(widthModel);
JSpinner height = new JSpinner();
SpinnerNumberModel heightModel = new SpinnerNumberModel();
heightModel.setMinimum(1);
heightModel.setMaximum(200);
height.setModel(heightModel);
JButton submit = new JButton("Add Shape");
submit.addActionListener((ActionEvent e) -> {
if (shapes.getSelectedItem().equals("Square")) {
add(new Block((Integer)widthModel.getValue(), (Integer)heightModel.getValue(), Color.BLUE));
} else {
add(new Ball((Integer)widthModel.getValue(), (Integer)heightModel.getValue(), Color.BLUE));
}
});
add(shapes);
add(width);
add(height);
add(submit);
}
}
当您单击“提交”按钮时,它应该添加一个正方形或椭圆形(取决于您的选择),其高度和宽度由您在微调器中指定。然而,它什么都没有。我打印出宽度和高度,它们是有效的,所以没有问题。另外,我尝试自己添加自定义组件,效果很好。
【问题讨论】:
标签: java swing dynamic custom-component