JPanel, JScrollPane,和图片的问题....

rogerzhangqi 2009-06-29 12:28:38

class Animater extends JPanel {
Animater() {

}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon("map2.jpg");
this.setSize(img.getIconWidth(), img.getIconHeight());
System.out.println(img.getIconHeight());
img.paintIcon(this, g, 0, 0);
}
}



public class mainframe extends JFrame {
public mainframe() {
super("地图");
getContentPane().setLayout(null);
Animater am= new Animater();
Container c= this.getContentPane();
JScrollPane scrollPane = new JScrollPane(am);
scrollPane.setAutoscrolls(true);
scrollPane.setBounds(0, 0, 1016, 596);
scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.add(scrollPane);
this.setSize(1024,734);
this.setVisible(true);




}
}


public class main {


public static void main(String[] args) {
mainframe mf= new mainframe();

}

}

我的3个类,第一个是继承的JPanel 为了放图片进去
有几个问题
第一个问题比较奇怪 我的Animater类里 写了一个System.out.println(xxxx);语句.我现在运行起来,他不断的打印出数据,并且cpu使用率一直是100%.这是为什么?怎么解决。..?
第二个问题..我如果将我的那张map.jpg替换成另外一张分辨率很高的,文件大小很大的图,运行起来就直接抱错
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space 请问下为什么?有办法解决吗?
第三个问题..我是在jpanel里装进了图片,再将jpanel放到jscrollpanel里的,目的是想可以用滚轴来上下拖动图片,因为图片可能比较大,但为什么我现在不管图片多大 滚轴都没效果....这个问题比较重要..
谢谢各位了
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rogerzhangqi 2009-06-29
  • 打赏
  • 举报
回复
我自己顶个先
young_smile 2009-06-29
  • 打赏
  • 举报
回复
结贴率很低呀...
rogerzhangqi 2009-06-29
  • 打赏
  • 举报
回复
没人理....我再顶一下。.
编写java浏览器程序 * * Explorer.java * * Created on 2009年6月20日 */ package container; /** * * @author Administrator */ public class Explorer extends javax.swing.JFrame { /** Creates new form Explorer */ public Explorer() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabelSite = new javax.swing.JLabel(); jTextFieldAddress = new javax.swing.JTextField(); jButtonGo = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jEditorPaneHTML = new javax.swing.JEditorPane(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabelSite.setFont(new java.awt.Font("宋体", 1, 14)); // NOI18N jLabelSite.setText("地址:"); jButtonGo.setText("转到"); jButtonGo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonGoActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(75, 75, 75) .addComponent(jLabelSite) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextFieldAddress, javax.swing.GroupLayout.PREFERRED_SIZE, 276, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(2, 2, 2) .addComponent(jButtonGo, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(70, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(19, 19, 19) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonGo) .addComponent(jLabelSite) .addComponent(jTextFieldAddress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jEditorPaneHTML.setEditable(false); jEditorPaneHTML.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { jEditorPaneHTMLHyperlinkUpdate(evt); } }); jScrollPane1.setViewportView(jEditorPaneHTML); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGap(27, 27, 27) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 483, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 312, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// private void jButtonGoActionPerformed(java.awt.event.ActionEvent evt) { String myURL=this.jTextFieldAddress.getText().trim(); try{ if(myURL!=null&&!myURL.equals("")) jEditorPaneHTML.setPage(myURL); }catch(java.io.IOException e){ e.printStackTrace(); } } private void jEditorPaneHTMLHyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { try{ if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) jEditorPaneHTML.setPage(evt.getURL()); }catch(java.io.IOException e){ e.printStackTrace(); } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Explorer().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButtonGo; private javax.swing.JEditorPane jEditorPaneHTML; private javax.swing.JLabel jLabelSite; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField jTextFieldAddress; // End of variables declaration }
java 万年历 源代码 片段如下: package wannianli; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; //import java.sql.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class wannianli extends JFrame implements ActionListener, MouseListener { private Calendar cld = Calendar.getInstance(); private String [] astr = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"}; private DefaultTableModel dtm = new DefaultTableModel(null,astr); private JTable table = new JTable(dtm); //装日期的表格 private JScrollPane sp = new JScrollPane(table); private JButton bLastYear = new JButton("上一年"); private JButton bNextYear = new JButton("下一年"); private JButton bLastMonth = new JButton("上月"); private JButton bNextMonth = new JButton("下月"); private JTextField jtfYear = new JTextField(5);//jtfYear年份显示和输入文本框,允许编辑单行文本 private JTextField jtfMonth = new JTextField(2);//jtfMonth月份显示文本框 private JPanel p1 = new JPanel(); //装入控制日期按钮的模块 private JPanel p2 = new JPanel(); private JPanel p3 = new JPanel(new BorderLayout()); private JPanel p4 = new JPanel(new GridLayout(2,1)); private JPanel p5 = new JPanel(new BorderLayout()); private JButton bAdd = new JButton("保存日志"); private JButton bDel = new JButton("删除日志"); private JTextArea jta = new JTextArea(); //JTextArea 是一个显示纯文本的多行区域 private JScrollPane jsp = new JScrollPane(jta); //管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口 private JLabel l = new JLabel("小提示:可直接输入年份,提高查询效率!"); private JLabel lt = new JLabel();//系统时间 private JLabel ld = new JLabel();//日期是否被选择 private int lastTime; JMenuBar jmb = new JMenuBar(); JMenu view;
//package chapter1; import java.text.*; import javax.swing.*; import java.awt.*; import javax.swing.event.*; import java.awt.event.*; import java.util.*; //package chapter1; import java.awt.BorderLayout; import java.awt.event.*; import javax.swing.*; public class MainFrame extends JFrame { private Inventory inventory=new Inventory(); private Invoice invoice=new Invoice(inventory); final JTextArea textArea_1=new JTextArea(); //显示存货单信息 final JTextArea textArea_2=new JTextArea(); //显示提货单信息 public static void main(String args[]) { MainFrame frame=new MainFrame(); frame.setBounds(100,100,450,300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); //框架可见 } public MainFrame() { super(); setTitle("商品库存管理系统"); final JTabbedPane tabbedPane =new JTabbedPane(); //定义总和面板tabbedPane 包含提货单和存货单 final JPanel panel_1=new JPanel(); //定义放存货单面板 final JPanel panel_2=new JPanel(); //定义放提货单面板 final JScrollPane srcollPane_1 =new JScrollPane(textArea_1); final JScrollPane srcollPane_2 =new JScrollPane(textArea_2); final JTextField id_1=new JTextField(4); final JTextField number_1=new JTextField(4); //欲修改的存货单某项的数量 final JTextField id_2=new JTextField(4); final JTextField number_2=new JTextField(4); //欲修改的提货单某项的数量 final JPanel paneButton_1 =new JPanel(); final JPanel paneButton_2 =new JPanel(); final JPanel paneInputl_1=new JPanel(); final JPanel paneInput_2=new JPanel();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧