JScrollPaneとJScrollPaneを保持しています。 JScrollPane自体は、JPanelから派生したクラスを保持します。 JPanelクラスを使用して、Imageやその他のプリミティブを描画します。残念ながら、JPanelがJSrollPaneのサイズを超えていても、JScrollPaneのスクロールバーは表示されません。JScrollPaneのJPanelにスクロールバーが表示されない
私は走るいくつかのテストコード作成:これは、メインクラスです
を:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
class ScrolledPane extends JFrame{
private JScrollPane scrollPane;
public ScrolledPane()
{
setTitle("Scrolling Pane Application");
setSize(300, 200);
setBackground(Color.gray);
TestPanel testPanel = new TestPanel();
testPanel.setLayout(new BorderLayout());
scrollPane = new JScrollPane(testPanel);
this.getContentPane().add(scrollPane, BorderLayout.CENTER);
}
public static void main(String args[])
{
// Create an instance of the test application
ScrolledPane mainFrame = new ScrolledPane();
mainFrame.setVisible(true);
}
}
そして、ここではJPanelのから派生したクラスのコードです:興味深いことに
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
public class TestPanel extends JPanel {
private Image groundPlan;
public TestPanel(){
super();
this.setBackground(Color.green);
this.setLayout(new BorderLayout());
this.groundPlan = Toolkit.getDefaultToolkit().getImage("D:\\EclipseWorkspace\\img.png");
}
public void paint(Graphics graphics) {
super.paint(graphics);
if(groundPlan != null) {
graphics.drawImage(groundPlan, 0, 0, this);
}
}
}
JPanelではなくJScrollpaneにImageを付けてJLabelを挿入するだけでスクロールバーが表示されます。ここでは、このオプションのコード:あなたは私はJScrollPaneの中でのJPanelを使用した場合、スクロールバーが発生することができますどのように伝えることができれば
public ScrolledPane() //Frame <- Scrollpane <- label <- image
{
setTitle("Scrolling Pane Application");
setSize(300, 200);
setBackground(Color.gray);
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
Icon image = new ImageIcon("D:\\EclipseWorkspace\\img.png");
JLabel label = new JLabel(image);
scrollPane = new JScrollPane();
scrollPane.getViewport().add(label);
this.getContentPane().add(scrollPane, BorderLayout.CENTER);
}
私はappriciateでしょう。 JScrollPaneの中にパネルの
よろしく&おかげ マルク
1) 'JPanel'で' paint() 'をオーバーライドしないでください。 'paintComponent()'を使用してください。 2)フレームを伸ばさないでください。 3)ラベルを追加できるときに、カスタムペイントするのはなぜですか? –