📄 printalignmentimage.java
字号:
return fsave; } /** * * Provide some options for the image created * @param showFileOptions display file options * */ protected String showPrintPreviewOptions() { JPanel joptions = new JPanel(); Box YBox = Box.createVerticalBox(); joptions.add(YBox);// no. of residues per line Box XBox = Box.createHorizontalBox(); if(format == null) format = new PageFormat(); String mres = Integer.toString(gsc.getResiduesPerLine(format)); JLabel jres = new JLabel("Residues per line: [max:"+mres+"]"); if(nResPerLine != 0) mres = Integer.toString(nResPerLine); JTextField maxResiduesField = new JTextField(mres); XBox.add(jres); XBox.add(maxResiduesField); XBox.add(Box.createHorizontalGlue()); YBox.add(XBox); JOptionPane.showMessageDialog(null,joptions,"Options", JOptionPane.PLAIN_MESSAGE); nResPerLine = Integer.parseInt(maxResiduesField.getText()); return null; } /** * * Get a default page format * @return page format * */ protected PageFormat getFormatDialog() { PrinterJob printerJob = PrinterJob.getPrinterJob(); format = new PageFormat(); format = printerJob.pageDialog(format); return format; } /** * * * */ protected void setAntiAlias(boolean antiAlias) { this.antiAlias = antiAlias; } /** * * Returns a generated image * @param pageIndex page number * @return image * */ private RenderedImage createAlignmentImage(int pageIndex) { int width = (int)format.getWidth(); int height = (int)format.getHeight(); // Create a buffered image in which to draw BufferedImage bufferedImage = new BufferedImage( width,height, BufferedImage.TYPE_INT_RGB); // Create a graphics contents on the buffered image Graphics2D g2d = bufferedImage.createGraphics(); if(antiAlias) {// System.out.println("Anit-alias on!"); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); } g2d.setColor(Color.white); g2d.fillRect(0,0,width,height); // Draw graphics if(nResPerLine == 0) gsc.drawSequences(g2d,format,pageIndex); else gsc.drawSequences(g2d,format,pageIndex,nResPerLine); return bufferedImage; } /** * * Display a single page print preview page * */ protected void printSinglePagePreview() { Border loweredbevel = BorderFactory.createLoweredBevelBorder(); Border raisedbevel = BorderFactory.createRaisedBevelBorder(); Border compound = BorderFactory.createCompoundBorder(raisedbevel,loweredbevel); statusField.setBorder(compound); statusField.setEditable(false); format = new PageFormat(); Dimension d = gsc.getImageableSize(nResPerLine); double imageWidth = d.getWidth(); double imageHeight = d.getHeight(); Paper paper = format.getPaper(); paper.setSize(imageWidth,imageHeight); paper.setImageableArea(0.d,0.d,imageWidth,imageHeight+imageHeight); format.setPaper(paper); statusField.setText(pageIndex+"1 of 1 page(s)"); final JFrame f = new JFrame("Print Preview"); JPanel jpane = (JPanel)f.getContentPane(); JScrollPane scrollPane = new JScrollPane(this); jpane.setLayout(new BorderLayout()); jpane.add(scrollPane,BorderLayout.CENTER); jpane.add(statusField,BorderLayout.SOUTH); final Dimension dScreen = f.getToolkit().getScreenSize(); d = new Dimension((int)format.getWidth(),(int)format.getHeight()); setPreferredSize(d); d = new Dimension((int)(dScreen.getWidth()/2), (int)((dScreen.getHeight()*3)/4)); f.setSize(d);// menus JMenuBar menuBar = new JMenuBar(); JMenu filemenu = new JMenu("File"); menuBar.add(filemenu);// print png/jpeg JMenuItem printImage = new JMenuItem("Print Image File (png/jpeg)..."); printImage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { print(); } }); filemenu.add(printImage); // close filemenu.add(new JSeparator()); JMenuItem menuClose = new JMenuItem("Close"); menuClose.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E, ActionEvent.CTRL_MASK)); filemenu.add(menuClose); menuClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { f.dispose(); } }); f.setJMenuBar(menuBar); f.setVisible(true); } /** * * Display a print preview page * */ protected void printPreview() { Border loweredbevel = BorderFactory.createLoweredBevelBorder(); Border raisedbevel = BorderFactory.createRaisedBevelBorder(); Border compound = BorderFactory.createCompoundBorder(raisedbevel,loweredbevel); statusField.setBorder(compound); statusField.setEditable(false); if(format == null) format = getFormatDialog(); showPrintPreviewOptions(); final int npages = gsc.getNumberPages(format,nResPerLine); statusField.setText(pageIndex+"1 of "+npages+" page(s)"); final JFrame f = new JFrame("Print Preview"); JPanel jpane = (JPanel)f.getContentPane(); JScrollPane scrollPane = new JScrollPane(this); jpane.setLayout(new BorderLayout()); jpane.add(scrollPane,BorderLayout.CENTER); jpane.add(statusField,BorderLayout.SOUTH); final Dimension dScreen = f.getToolkit().getScreenSize(); Dimension d = new Dimension((int)format.getWidth(),(int)format.getHeight()); setPreferredSize(d); d = new Dimension((int)(dScreen.getWidth()/2), (int)((dScreen.getHeight()*3)/4)); f.setSize(d); JMenuBar menuBar = new JMenuBar(); JMenu filemenu = new JMenu("File"); menuBar.add(filemenu);// print postscript JMenu printMenu = new JMenu("Print"); filemenu.add(printMenu); JMenuItem print = new JMenuItem("Print Postscript..."); print.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new PrintAlignment(gsc); } }); printMenu.add(print);// print png/jpeg JMenuItem printImage = new JMenuItem("Print Image Files (png/jpeg)..."); printImage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { print(); } }); printMenu.add(printImage);// close filemenu.add(new JSeparator()); JMenuItem menuClose = new JMenuItem("Close"); menuClose.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E, ActionEvent.CTRL_MASK)); filemenu.add(menuClose); menuClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { f.dispose(); } });// page selection buttons final JButton nextPage = new JButton(">"); final JButton endPage = new JButton(">>"); final JButton previousPage = new JButton("<"); final JButton firstPage = new JButton("<<"); menuBar.add(firstPage); firstPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pageIndex = 0; repaint(); previousPage.setEnabled(false); firstPage.setEnabled(false); nextPage.setEnabled(true); endPage.setEnabled(true); statusField.setText(pageIndex+1+" of "+npages+" pages"); } }); menuBar.add(previousPage); previousPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pageIndex--; repaint(); if(pageIndex == 0) { previousPage.setEnabled(false); firstPage.setEnabled(false); } nextPage.setEnabled(true); endPage.setEnabled(true); statusField.setText(pageIndex+1+" of "+npages+" pages"); } }); previousPage.setEnabled(false); firstPage.setEnabled(false); menuBar.add(nextPage); nextPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pageIndex++; repaint(); if(pageIndex == npages-1) { nextPage.setEnabled(false); endPage.setEnabled(false); } previousPage.setEnabled(true); firstPage.setEnabled(true); statusField.setText(pageIndex+1+" of "+npages+" pages"); } }); menuBar.add(endPage); endPage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pageIndex = npages-1; repaint(); nextPage.setEnabled(false); endPage.setEnabled(false); previousPage.setEnabled(true); firstPage.setEnabled(true); statusField.setText(pageIndex+1+" of "+npages+" pages"); } }); if(pageIndex == npages-1) { nextPage.setEnabled(false); endPage.setEnabled(false); } f.setJMenuBar(menuBar); f.setVisible(true); } /** * * Write out the image * @param image image * @param file file to write image to * @param type type of image * */ private void writeImageToFile(RenderedImage image, File file, String type) { try { javax.imageio.ImageIO.write(image,type,file); }catch ( IOException e ) { System.out.println("Java 1.4+ is required"); e.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -