0

如何让“绘图线、矩形和椭圆”出现在底部左侧?我目前在左上角,我不知道怎么做?请帮忙

我也尝试过,但它没有像

JLabel label = new JLabel("文本标签", JLabel.LEFT);

label.setVerticalAlignment(JLabel.BOTTOM);

import java.awt.*;
import javax.swing.*; 

public class LinesRectsOvalsJPanel extends JPanel {


 public void paintComponent( Graphics g ) {



   super.paintComponent( g ); 

     this.setBackground( Color.WHITE );



     //   x y width height
     g.setColor(Color.BLACK);
     g.drawLine(5,10,5,30);
     g.setColor(Color.BLUE);
     g.drawLine(18,70,127,24);
     g.setColor(Color.RED);
     g.drawLine(25,45,100,38);

     g.setColor(Color.YELLOW);
     g.drawOval(23,25,23,55);
     g.setColor(Color.BLACK);
     g.drawOval(15,14,40,78);
     g.setColor(Color.CYAN);
     g.drawOval(180,102,5,90);
     g.setColor(Color.RED);
     g.drawOval(21,20,89,11);
     g.setColor(Color.BLUE);
     g.drawOval(35,87,39,27);


     g.setColor(Color.YELLOW);
     g.fillRect(87,5,5,60);

     g.setColor(Color.GREEN);
     g.fillRect(105,15,15,85);

     g.setColor(Color.CYAN);
     g.fillRect(14,45,76,86);

     g.setColor(Color.RED);
     g.fillRect(70,79,65,86);

     g.setColor(Color.BLUE);
     g.fillRect(90,108,5,8); 

      }

    }



    import java.awt.*;
    import javax.swing.*;

    public class LinesRectsOvals {

    public static void main( String args[] ) {

    JFrame frame =
      new JFrame( "Drawing lines, rectangles and ovals");

         LinesRectsOvalsJPanel linesRectsOvalsJPanel =
      new LinesRectsOvalsJPanel();

         linesRectsOvalsJPanel.setBackground( Color.WHITE );
      frame.add( linesRectsOvalsJPanel ); // add panel to frame
      frame.setSize( 300, 300 ); // set frame size
      frame.setVisible( true ); 
        }
      }
4

3 回答 3

1

用于绘制线条的 x 和 y 值相对于屏幕的左上角。要参考底角,请使用低 x 和大 y 值。我希望这有帮助。

于 2012-08-28T23:13:32.297 回答
0

index 原则上是正确的。在实践中,您会想知道要绘制到的容器的高度和宽度。

尝试这个

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    this.setBackground(Color.WHITE);

    int width = getWidth() - 1;
    int height = getHeight() - 1;

    //   x y width height
    g.setColor(Color.BLACK);
    g.drawLine(5, height - 30 - 10, 5, 30);
    g.setColor(Color.BLUE);
    g.drawLine(18, height - 24 - 70, 127, 24);
    g.setColor(Color.RED);
    g.drawLine(25, height - 38 - 45, 100, 38);

    g.setColor(Color.YELLOW);
    g.drawOval(23, height - 55 - 25, 23, 55);
    g.setColor(Color.BLACK);
    g.drawOval(15, height - 78 - 14, 40, 78);
    g.setColor(Color.CYAN);
    g.drawOval(180, height - 90 - 102, 5, 90);
    g.setColor(Color.RED);
    g.drawOval(21, height - 11 - 20, 89, 11);
    g.setColor(Color.BLUE);
    g.drawOval(35, height - 27 - 87, 39, 27);


    g.setColor(Color.YELLOW);
    g.fillRect(87, height - 50 - 5, 5, 60);

    g.setColor(Color.GREEN);
    g.fillRect(105, height - 85 - 15, 15, 85);

    g.setColor(Color.CYAN);
    g.fillRect(14, height - 86 - 45, 76, 86);

    g.setColor(Color.RED);
    g.fillRect(70, height - 86 - 79, 65, 86);

    g.setColor(Color.BLUE);
    g.fillRect(90, height - 8 - 108, 5, 8);

}

这里的重要部分是

int width = getWidth() - 1;
int height = getHeight() - 1;
于 2012-08-29T03:18:12.530 回答
0

我将首先检查您的代码以解释发生了什么:

JLabel label = new JLabel("Text Label", JLabel.LEFT);
label.setVerticalAlignment(JLabel.BOTTOM);

setVerticalAlignment唯一影响标签文本在标签内的定位方式,而不影响标签在父容器内的定位方式。请参阅该方法的 javadoc

设置标签内容沿 Y 轴的对齐方式。

您的“绘图线...”字符串出现在顶部的事实是由于以下代码

JFrame frame = new JFrame( "Drawing lines, rectangles and ovals");

这将在您指定框架标题的位置创建一个新框架。就像所有其他程序一样,标题显示在顶部(以及最大化、关闭和最小化按钮)。

如果你想在底部有文本,你可以简单地使用适当的布局管理器。

JFrame frame = new JFrame( "Whatever title you want" );
JPanel contentPane = new JPanel( new BorderLayout() );

LinesRectsOvalsJPanel linesRectsOvalsJPanel =
      new LinesRectsOvalsJPanel();
contentPane.add( linesRectsOvalsJPanel, BorderLayout.CENTER );

Component statusBar = ...;//probably a JLabel is sufficient
contentPane.add( statusBar, BorderLayout.SOUTH );

更多关于布局管理器和示例的链接可以在Swing 信息页面上找到。

于 2012-08-29T06:49:31.137 回答