我有一个带有矩形的网格,我将用值填充。但是,根据输入,网格可能非常大,因此我想向图像添加滚动条选项。下面的代码似乎没有做我想要的?任何帮助表示赞赏。
class Cube extends JComponent
{
public void paint(Graphics g)
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
g.setColor(Color.GRAY);
g.fillRect(i*40, j*40, 40, 40);
}
}
for (int i = 0; i < 50; i++)
{
for (int j = 0; j < 50; j++)
{
g.setColor(Color.BLACK);
g.drawRect(i*40, j*40, 40, 40);
}
}
}
public static void main(String[] a)
{
// CREATE SCROLLBAR
JScrollPane scroller = new JScrollPane();
JFrame window = new JFrame();
window.setSize(200,200);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().add(new Cube());
//ADD THE SCROLLBAR
window.getContentPane().add(scroller, BorderLayout.CENTER);
window.setVisible(true);
}
}
答案 0 :(得分:2)
一些提示:
我重写你的程序如下。
class Cube extends JComponent
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
g.setColor(Color.GRAY);
g.fillRect(i*40, j*40, 40, 40);
}
}
for (int i = 0; i < 50; i++)
{
for (int j = 0; j < 50; j++)
{
g.setColor(Color.BLACK);
g.drawRect(i*40, j*40, 40, 40);
}
}
}
@Override
public Dimension getPreferredSize() {
return new Dimension(1000, 1000);
}
public static void main(String[] a){
// use event dispatcher thread
EventQueue.invokeLater(
new Runnable() {
public void run() {
Cube cube = new Cube();
JScrollPane scroller = new JScrollPane(cube);
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set the content pane
window.setContentPane(scroller);
window.pack();
window.setVisible(true);
}
});
}
}