java中的状态栏?

时间:2012-08-28 23:08:13

标签: swing stl jframe jpanel statusbar

如何在左侧底部出现“绘制线条,矩形和椭圆形”?我目前在左上方有它,我不知道该怎么做?请帮忙

我也试过,它没有像

这样的工作

JLabel label = new JLabel(“Text Label”,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 ); 
        }
      }

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

索引原则上是正确的。实际上,您需要知道要绘制的容器的高度和宽度。

试试这个

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;

答案 2 :(得分: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 info page上找到。