我可以绘制一条水平线,但无法绘制垂直线。请帮我。
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Success extends JFrame{
public Success(){
JPanel panel=new JPanel();
getContentPane().add(panel);
setSize(450,450);
JButton button =new JButton("press");
panel.add(button);
}
public void paint(Graphics g) {
super.paint(g); // fixes the immediate problem.
Graphics2D g2 = (Graphics2D) g;
Line2D lin = new Line2D.Float(20, 40, 850, 40);
g2.draw(lin);
}
public static void main(String []args){
Success s=new Success();
s.setVisible(true);
}
}
提前致谢。
答案 0 :(得分:4)
保持x坐标相同并改变y坐标的值,如下所示
Line2D lin = new Line2D.Float(20, 40, 20, 150);
前两个值是该行起点的(x1,y1)值和该行的最后两个值(x2,y2)终点。现在我希望你理解为什么你的代码产生了一条水平线以及绘制垂直线需要做些什么。
答案 1 :(得分:1)
我注意到了一些事情,其中一些已被指出:
getWidth()
和getHeight()
方法。Success
类的某个位置创建行,实现ActionListener
,这样您就可以每帧更新代码,并在该更新中调整行的大小,然后只重新绘制{{1 }}。 paintComponent
,而您通常不应该这样做。JFrame
方法,而不是paintComponent
方法。paint
方法很方便,但在这种情况下甚至不需要,因为将其添加到JFrame会自动为您调整大小。Swing中有很多东西在幕后发生,它可能会让人感到困惑,因为通常你必须明确说出来,但继续玩这个例子,你应该保持安全一段时间。
getPreferredSize