青い線の輪郭と黒い塗りつぶしの壁を作りたいです。現在、青い壁しかなく、グラフィックスの方法をいくつか試しましたが、機能しませんでした。
public void paint(Graphics g) {
g.setColor(Color.blue);
g.fillRect(x, y, size, size);
}
青い線の輪郭と黒い塗りつぶしの壁を作りたいです。現在、青い壁しかなく、グラフィックスの方法をいくつか試しましたが、機能しませんでした。
public void paint(Graphics g) {
g.setColor(Color.blue);
g.fillRect(x, y, size, size);
}
アウトラインの描画に使用Graphics#drawRect
: -
g.setColor(Color.black);
g.fillRect(x, y, size, size);
g.setColor(Color.blue);
g.drawRect(x, y, size, size);
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;
}
}
以下のように、青い長方形よりも小さい別の長方形を青い長方形の上にペイントするだけです。
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);
}