主なアイデアは - スライダの値が大きくなると、より多くの行がコンポーネントの等しい部分を分割し、ポリゴンの線を横切らない(画像の左上隅のように)。私はすべてのコーナーでこれをやりたいと思っていますが、今はそのうちの1人だけとしました。DrawLine in Java Swing
誰かが私の行を幅の1/3にするために変更する必要があることを教えてもらえますか?
私の値は1/3ではなく、1/3ではなく、n
はスライダの変数です。
マイコード:
import java.awt.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Mariusz extends JFrame {
private int n = 5;
private Color kolor = Color.RED;
MyComponent komponent = null;
private class MyComponent extends JComponent
{
protected void paintComponent (Graphics grafika)
{
grafika.setColor(kolor);
grafika.drawLine(getWidth() * 1/3, 0, 0, getHeight() * 1/3);
grafika.drawLine(0, getHeight() * 1/3, getWidth() * 1/3, getHeight());
grafika.drawLine(getWidth() * 1/3, getHeight(),getWidth(), getHeight() * 1/3);
grafika.drawLine(getWidth(), getHeight() * 1/3, getWidth() * 1/3, 0);
for (int i = 0; i < n ; i++)
{
if (i <= n/3)
{
grafika.drawLine(getWidth() * i /n, 0, getWidth() * i /n, (getHeight() - getHeight() * 2/3) - getHeight() * i/n); //lewy gorny
grafika.drawLine( getWidth() * i/n,(getHeight() - getHeight() * 2/3) + getHeight() * i/n + getHeight() *1/3, getWidth() * i/n, getHeight());
}
if (i > n/3)
{
grafika.drawLine(getWidth() * i/n , 0, getWidth() * i /n, getHeight() * 2 * i /n/3 - getHeight() * 1 /3 );
}
}
}
}
public Mariusz(String string)
{
super(string);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension d = kit.getScreenSize();
setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
add (komponent = new MyComponent());
JPanel panel = new JPanel(new BorderLayout());
add(panel,BorderLayout.SOUTH);
final JSlider slider = new JSlider(3,40,n);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
n = slider.getValue();
komponent.repaint();
}
});
panel.add(slider);
setVisible(true);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
public void run() {
new Mariusz("triangles");
}
});
}
}
に分割してください[MCVE] – Frakcool
説明有効な、より良いものを作品とものではありませんし、どのようにあなたはそれが仕事をしたいです。 2つの文では不十分です。 – user1803551
[example](http://stackoverflow.com/a/39812618/230513)の 'setStroke()'を探していますか? – trashgod