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

インデックスは原則として正しいです。実際には、ペイント先のコンテナーの高さと幅を知りたいと思うでしょう。

これを試して

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 軸に沿ってラベルのコンテンツの配置を設定します。

「Drawing lines...」文字列が上部に表示されるのは、次のコードによるものです

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 に答える