【发布时间】:2015-06-21 01:37:16
【问题描述】:
我想要一个简单的程序,用滑块改变矩形的宽度。 当我运行它时,jpanel 无法正常工作,因为它仅适合 panel.width 宽度并且无法正确重绘。
import java.awt.*;
import javax.swing.*;
public class panel extends JPanel {
private int width = 50;
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRect(20, 20, width, 25);
}
public void setWidth(int width) {
this.width = (width > 0) ? width : 0;
repaint();
}
public int getWidth() {
return width;
}
}
界面:
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class Gui extends JFrame {
private panel p;
private JSlider slider;
Gui() {
super("Draw program");
setDefaultCloseOperation(EXIT_ON_CLOSE);
p = new panel();
p.setBackground(Color.RED);
slider = new JSlider(SwingConstants.HORIZONTAL, 0, 300, p.getWidth());
slider.setMajorTickSpacing(50);
slider.setPaintTicks(true);
add(p);
add(slider, BorderLayout.SOUTH);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
p.setWidth(slider.getValue());
}
});
}
}
【问题讨论】:
-
请查看答案的编辑和答案代码中的 cmets。