【发布时间】:2023-04-03 20:33:01
【问题描述】:
我确实更新、绘制、重新绘制图形,但我看不到所有...我已检查视口,但它限制了我的视图面板...!
我不知道我该怎么办... T-T
我确实更新了当滚动条移动时
top.add(tf1);
top.add(new Label("×"));
top.add(tf2);
Button set = new Button("SET!!");
set.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
try{
view.remove(board);
}catch(NullPointerException e111){
}
int x=Integer.parseInt(tf1.getText()), y=Integer.parseInt(tf2.getText());
board = new Board(x,y);
view.add(board);
view.setPreferredSize(new Dimension(x*20, y*20));
view.setBounds(0, 0, x*20, y*20);
}
});
top.add(set);
rp.add(top);
editView.setBounds(0, 100, 500, 600);
editView.getViewport().addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
try{
// board.update(board.getGraphics());
// board.repaint();
// board.paint(board.getGraphics());
// board.paintComponents(getGraphics());
/*view.remove(board);
view.add(board);*/
}catch(NullPointerException e2){
}
}
});
rp.add(editView);
'view' 只是一个 Panel(null); 和~ 内部类 Board = board
class Board extends JPanel{
public Image board;
public int y,x;
Board(int x, int y){
this.x = x;
this.y = y;
setBounds(0, 0, x*20, y*20);
setPreferredSize(new Dimension(x*20, y*20));
addMouseListener(this);
addMouseMotionListener(this);
setOpaque(true);
}
@Override
public void paint(Graphics g) {
board = createImage(x*20, y*20);
Graphics g2 = board.getGraphics();
g2.setColor(Color.white);
g2.fillRect(0, 0, x*20, y*20);
g2.setColor(Color.black);
for(int i=0;i<y;i++){
if(i%10==0){
g2.setColor(Color.red);
}
g2.drawLine(0, i*20, x*20, i*20);
if(i%10==0){
g2.setColor(Color.black);
}
}
for(int i=0;i<x;i++){
if(i%10==0){
g2.setColor(Color.red);
}
g2.drawLine(i*20, 0, i*20, y*20);
if(i%10==0){
g2.setColor(Color.black);
}
}
g.drawImage(board, 0, 0, x*20, y*20, null);
}
我确实喜欢这些东西...我尝试了很多方法..但同样我无法解决它... =_=...
请帮帮我!!~~
结构:JScrollPane - 面板 - 面板
面板定义尺寸方法:setPreferredSize(new Dimension(x,y))
我在绘制时只使用图形。
【问题讨论】:
标签: java graphics panel jscrollpane