我的问题是我想绘制一个巨大的面板,但不可能在小尺寸框架中看到这个面板,所以我应该使用 ScrollPane 并且我使用了它..
但是通过滚动发生冲突所以我看不到任何面板。我只想修复它
请任何人看到我的代码并运行它并帮助解决问题
import java.awt.*;
import javax.swing.*;
public class Swing{
JFrame frame;
Panel panel;
public static void main(String [] args){
Swing a = new Swing();
a.go();
}
public void go(){
frame = new JFrame();
panel = new Panel();
panel.setPreferredSize(new Dimension(5000, 5000));
JScrollPane scroll = new JScrollPane(panel);
frame.add(scroll);
frame.pack();
frame.setVisible(true);
}
class Panel extends JPanel{
public void paintComponent(Graphics g){
Graphics2D a = (Graphics2D)g;
a.setColor(Color.RED);
a.drawLine(50, 50, 5000, 5000);
}
}
}
提前致谢!
最佳答案
始终确保调用 super.paintComponent(g);
来重绘组件的其余部分。否则会看到这些类型的绘画伪影。
import java.awt.*;
import javax.swing.*;
public class Swing{
JFrame frame;
Panel panel;
public static void main(String [] args){
Swing a = new Swing();
a.go();
}
public void go(){
frame = new JFrame();
panel = new Panel();
panel.setPreferredSize(new Dimension(5000, 5000));
JScrollPane scroll = new JScrollPane(panel);
frame.add(scroll);
frame.pack();
frame.setVisible(true);
}
class Panel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g); // VERY IMPORTANT!
Graphics2D a = (Graphics2D)g;
a.setColor(Color.RED);
a.drawLine(50, 50, 5000, 5000);
}
}
}
关于java - 通过 Java 在 ScrollPane 中绘制一个巨大的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20852536/