【发布时间】:2014-08-21 00:12:46
【问题描述】:
我有一个名为 ControlsPanel 的类。如果我在此类中按下 JButton (Start),则布尔值 (isPressed) 的值将变为 true。在另一个类(CashRegistersPanel)中,我想绘制一个图像,但只有前一个类中的布尔值是真的。 当然这个布尔值一开始是假的,所以它不会画任何东西。
这是我的两个课程:
public ControlsPanel(final ParametersPanel panel) {
start = new JButton("Start");
stop = new JButton("Stop");
start.setFont(new Font("Arial", Font.BOLD, 14));
stop.setFont(new Font("Arial", Font.BOLD, 14));
this.setLayout(null);
this.setBackground(new Color(199,202,255));
this.add(start);
this.add(stop);
start.setBounds(10, 10, 280, 30);
stop.setBounds(10, 50, 280, 30);
stop.setEnabled(false);
start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (start.getText().equals("Start")) {
start.setText("Pause");
stop.setEnabled(true);
startIsPressed = true;
}
}
});
public boolean StartisPressed() {
return startIsPressed;
}
}
和
public class CashRegistersPanel extends JPanel{
private Image img;
private int amount;
private ParametersPanel parametersPanel;
private ControlsPanel controlsPanel;
private boolean startIsPressed;
public CashRegistersPanel(ParametersPanel parametersPanel, ControlsPanel controlPanel) {
this.parametersPanel = parametersPanel;
this.controlsPanel = controlPanel;
startIsPressed = controlsPanel.StartisPressed();
this.setBackground(new Color(237,237,237));
this.setLayout(null);
CashRegister cashRegister = new CashRegister();
img = cashRegister.getImg();
amount = parametersPanel.getAmountOfRegisters();
}
//Painting CashRegisters
public void paintComponent(Graphics g) {
if(startIsPressed) {
super.paintComponent(g);
for (int i = 1; i <= amount; i++) {
g.drawImage(img, 30, i*50, this);
}
}
}
}
【问题讨论】:
标签: java swing paintcomponent