-2
我嘗試添加的JPanel到JScrollPane中,再加入JScrollPane的到contentPane的,但它不工作,我讀書在這裏,最peple說添加的JPanel到JScrollPane中,但我仍然無法把它的滾動..java-how to scroll a jpanel?
package org.redeagle.growtopiamarket;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.swing.ScrollPaneConstants;
public class Main extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main frame = new Main();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 461, 540);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new GridLayout(0, 1, 0, 0));
JPanel panel = new JPanel();
panel.setBounds(0, 0, 436, 493);
panel.setLayout(new GridLayout(0,1));
JScrollPane sp = new JScrollPane(panel);
sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
contentPane.add(sp);
setLocationRelativeTo(null);
setResizable(false);
try {
URL urls = new URL("https://growtopiajson.000webhostapp.com/gtpost.xml");
URLConnection conn = urls.openConnection();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(conn.getInputStream());
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("post");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String strImageURL = eElement.getElementsByTagName("imageurl").item(0).getTextContent();
String strItemName = eElement.getElementsByTagName("itemname").item(0).getTextContent();
String strItemDesc = eElement.getElementsByTagName("itemdesc").item(0).getTextContent();
String strItemPrice = eElement.getElementsByTagName("itemprice").item(0).getTextContent();
String strItemSeller = eElement.getElementsByTagName("itemseller").item(0).getTextContent();
JPanel postPanel = new JPanel();
postPanel.setBounds(10, 11, 425, 94);
panel.add(postPanel);
postPanel.setLayout(null);
JLabel image = new JLabel("");
image.setBounds(0, 0, 90, 94);
Image images = null;
try {
URL urlss = new URL("http://www.growtopia.in/images/seeds/seed-info/house-entrance-block.png");
images = ImageIO.read(urlss);
} catch (IOException e) {
e.printStackTrace();
}
image.setIcon(new ImageIcon(new ImageIcon(images).getImage().getScaledInstance(image.getWidth(), image.getHeight(), Image.SCALE_DEFAULT)));
postPanel.add(image);
JLabel itemName = new JLabel(strItemName);
itemName.setFont(new Font("Trebuchet MS", Font.BOLD, 21));
itemName.setHorizontalAlignment(SwingConstants.CENTER);
itemName.setBounds(100, 0, 315, 32);
postPanel.add(itemName);
JLabel itemDesc = new JLabel("<html><p>" + strItemDesc + "</p></html>");
itemDesc.setHorizontalAlignment(SwingConstants.LEFT);
itemDesc.setBounds(100, 28, 315, 40);
postPanel.add(itemDesc);
JLabel itemPrice = new JLabel(strItemPrice);
itemPrice.setBounds(100, 69, 138, 14);
postPanel.add(itemPrice);
JLabel itemSeller = new JLabel(strItemSeller);
itemSeller.setHorizontalAlignment(SwingConstants.RIGHT);
itemSeller.setBounds(248, 69, 167, 14);
postPanel.add(itemSeller);
panel.add(postPanel);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}