1
[OK]ボタンをクリックした後に50個の四角形を描画するプログラムを作成します。しかし、私は、ウィンドウのサイズを変更した後、スクロールバーを使う、または再びOKをクリックして消えてしまう理由を理解していない。 drawingPanel.java:ウィンドウのサイズ変更またはスクロールバーの使用後にペイントコンポーネントが消える
import javax.swing.*;
import java.awt.*;
public class drawingPanel extends JPanel
{
public boolean drawIt = false;
public int x = 140,y = 0;
public void paintIt()
{
drawIt = true;
repaint();
}
public void paintComponent(Graphics g)
{
if (drawIt == true)
{
super.paintComponent(g);
for (int i = 1; i <= 50; i++)
{
g.fillRect(x, y, 50, 50);
y += 70;
}
}
}
}
Main.java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame
{
private drawingPanel draw = new drawingPanel();
private JPanel controlPanel = new JPanel();
private JButton ok = new JButton("OK");
private JScrollPane scroll = new JScrollPane(draw);
public Main()
{
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Demo");
setLayout(new BorderLayout());
controlPanel.setLayout(new FlowLayout());
controlPanel.add(ok);
ok.addActionListener(new okListener());
draw.setPreferredSize(new Dimension(100,1000));
add(controlPanel, BorderLayout.NORTH);
add(scroll,BorderLayout.CENTER);
setVisible(true);
}
private class okListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
draw.paintIt();
}
}
public static void main(String[] args)
{
new Main();
}
}
が私を助けてください、事前に感謝: はここに私のコードです(drawingPanelとメイン私は2つのクラスがあります)。
OMG!それは働いた、ありがとう。しかし、なぜ私はxとyを再初期化する必要があるのか説明できますか? –
@NguyenHoa:それ以外の場合、xとyは増加し続け、四角形を描くことになりますが、視界から外れます。 –
ああ、私はそれを得た。どうもありがとうございます!!! ^^ –