3

青い線の輪郭と黒い塗りつぶしの壁を作りたいです。現在、青い壁しかなく、グラフィックスの方法をいくつか試しましたが、機能しませんでした。

public void paint(Graphics g) {
    g.setColor(Color.blue);
    g.fillRect(x, y, size, size);
}
4

4 に答える 4

7

アウトラインの描画に使用Graphics#drawRect: -

g.setColor(Color.black);
g.fillRect(x, y, size, size);
g.setColor(Color.blue);
g.drawRect(x, y, size, size);
于 2012-11-29T15:38:15.930 に答える
5

paintComponentまず、ではなくオーバーライドしますpaint。第二に、そのような車輪を再発明する必要はありません。代わりに、既存の Swing コンポーネント (例: JPanel) を使用します。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Main 
{
    public static void main(String[] args) 
    {        
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();             
            }
        });
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add(getWallComponent());
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    private static JPanel getWallComponent()
    {
        JPanel panel = new JPanel();

        panel.setBackground(Color.black);
        panel.setBorder(BorderFactory.createLineBorder(Color.blue, 5));
        panel.setPreferredSize(new Dimension(200, 200)); // for demo purposes only

        return panel;
    }
}

ここに画像の説明を入力

于 2012-11-29T15:44:24.477 に答える
3

以下のように、青い長方形よりも小さい別の長方形を青い長方形の上にペイントするだけです。

public void paint(Graphics g) {
    g.setColor(Color.blue);
    g.fillRect(x, y, size, size);
    g.setColor(Color.black);
    g.fillRect(x-width/2,y-width/x,size-width,size-with);
}
于 2012-11-29T15:37:53.113 に答える