高分求救,不够再加,老板要做个“标尺“,要求和word的一样 开源项目中写报表编辑器的有这个.具体去sourceforge查查jasperreport的设计器吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JScrollPane本身就有这个属性可以设置的。 试试下面这段代码: jSlider1.setMaximum(20); jSlider1.setPaintLabels(true); Hashtable h = new Hashtable(21); for(int i=0;i<=20;i++) { h.put(new Integer(i), new JLabel("<html>|<br>"+i+"</html>")); } //jSlider1.setLabelTable( jSlider1.createStandardLabels(10)); jSlider1.setLabelTable( h);如果只要数字,使用jSlider1.setLabelTable( jSlider1.createStandardLabels(10));否则,使用jSlider1.setLabelTable( h);并把Jlabel的内容该为你想要的图形或文字 前两个类://// ScrollDemo.java //////////////////////////////import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;/* * ScrollDemo.java requires:images/youngdad.jpeg */public class ScrollDemo extends JPanel implements ItemListener{ private Rule columnView; private Rule rowView; private JToggleButton isMetric; private ScrollablePicture picture; public ScrollDemo() { ImageIcon david = createImageIcon("images/youngdad.jpeg"); columnView = new Rule(Rule.HORIZONTAL, true); rowView = new Rule(Rule.VERTICAL, true); if (david != null) { columnView.setPreferredWidth(david.getIconWidth()); rowView.setPreferredHeight(david.getIconHeight()); } else{columnView.setPreferredWidth(320);rowView.setPreferredHeight(480);} JPanel buttonCorner = new JPanel(); isMetric = new JToggleButton("cm", true); isMetric.setFont(new Font("SansSerif", Font.PLAIN, 11)); isMetric.setMargin(new Insets(2,2,2,2)); isMetric.addItemListener(this); buttonCorner.add(isMetric); picture = new ScrollablePicture(david, columnView.getIncrement()); JScrollPane pictureScrollPane = new JScrollPane(picture); pictureScrollPane.setPreferredSize(new Dimension(300, 250)); pictureScrollPane.setViewportBorder(BorderFactory.createLineBorder(Color.black)); pictureScrollPane.setColumnHeaderView(columnView); pictureScrollPane.setRowHeaderView(rowView); pictureScrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,buttonCorner); pictureScrollPane.setCorner(JScrollPane.LOWER_LEFT_CORNER,new Corner()); pictureScrollPane.setCorner(JScrollPane.UPPER_RIGHT_CORNER,new Corner()); setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); add(pictureScrollPane); setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); } public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) {rowView.setIsMetric(true);columnView.setIsMetric(true);} else {rowView.setIsMetric(false);columnView.setIsMetric(false);} picture.setMaxUnitIncrement(rowView.getIncrement()); } protected static ImageIcon createImageIcon(String path) { java.net.URL imgURL = ScrollDemo.class.getResource(path); if (imgURL != null) return new ImageIcon(imgURL); else { System.err.println("Couldn't find file: " + path); return null; } } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("ScrollDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new ScrollDemo()); frame.pack(); frame.setVisible(true); }}class ScrollablePicture extends JLabel implements Scrollable{ private int maxUnitIncrement = 1; private boolean missingPicture = false; public ScrollablePicture(ImageIcon i, int m) { super(i); if (i == null) { missingPicture = true; setText("No picture found."); setHorizontalAlignment(CENTER); setOpaque(true); setBackground(Color.white); } maxUnitIncrement = m; } public Dimension getPreferredSize() { if (missingPicture) return new Dimension(320, 480); else return super.getPreferredSize(); } public Dimension getPreferredScrollableViewportSize() { return getPreferredSize(); } public int getScrollableUnitIncrement(Rectangle visibleRect,int orientation,int direction) { int currentPosition = 0; if (orientation == SwingConstants.HORIZONTAL)currentPosition = visibleRect.x; else currentPosition = visibleRect.y; if (direction < 0) { int newPosition=currentPosition-(currentPosition/maxUnitIncrement)*maxUnitIncrement; return (newPosition == 0) ? maxUnitIncrement : newPosition; } else { return ((currentPosition / maxUnitIncrement) + 1) * maxUnitIncrement - currentPosition; } } public int getScrollableBlockIncrement(Rectangle visibleRect,int orientation,int direction) { if (orientation == SwingConstants.HORIZONTAL) return visibleRect.width - maxUnitIncrement; else return visibleRect.height - maxUnitIncrement; } public boolean getScrollableTracksViewportWidth() { return false; } public boolean getScrollableTracksViewportHeight() { return false; } public void setMaxUnitIncrement(int pixels) {maxUnitIncrement = pixels; }} 后两个类:class Rule extends JComponent{ public static final int INCH = Toolkit.getDefaultToolkit().getScreenResolution(); public static final int HORIZONTAL = 0; public static final int VERTICAL = 1; public static final int SIZE = 35; public int orientation; public boolean isMetric; private int increment; private int units; public Rule(int orientation, boolean m) { orientation = orientation; isMetric = m; setIncrementAndUnits(); } public void setIsMetric(boolean isMetric) { this.isMetric = isMetric; setIncrementAndUnits(); repaint(); } private void setIncrementAndUnits() { if (isMetric){units = (int)((double)INCH / (double)2.54);increment = units;} else{units = INCH;increment = units / 2;} } public boolean isMetric() { return this.isMetric; } public int getIncrement() { return increment; } public void setPreferredHeight(int ph){setPreferredSize(new Dimension(SIZE, ph));} public void setPreferredWidth(int pw){setPreferredSize(new Dimension(pw, SIZE));} public void paintComponent(Graphics g) { Rectangle drawHere = g.getClipBounds(); g.setColor(new Color(230, 163, 4)); g.fillRect(drawHere.x, drawHere.y, drawHere.width, drawHere.height); g.setFont(new Font("SansSerif", Font.PLAIN, 10)); g.setColor(Color.black); int end = 0,start = 0,tickLength = 0; String text = null; if (orientation == HORIZONTAL) { start = (drawHere.x / increment) * increment; end = (((drawHere.x + drawHere.width) / increment) + 1)*increment; } else { start = (drawHere.y / increment) * increment; end = (((drawHere.y + drawHere.height) / increment) + 1)*increment; } if (start == 0) { text = Integer.toString(0) + (isMetric ? " cm" : " in"); tickLength = 10; if (orientation == HORIZONTAL) { g.drawLine(0, SIZE-1, 0, SIZE-tickLength-1); g.drawString(text, 2, 21); } else { g.drawLine(SIZE-1, 0, SIZE-tickLength-1, 0); g.drawString(text, 9, 10); } text = null; start = increment; } for (int i = start; i < end; i += increment) { if (i % units == 0) {tickLength = 10;text = Integer.toString(i/units);} else {tickLength = 7; text = null;} if (tickLength != 0) { if (orientation == HORIZONTAL) { g.drawLine(i, SIZE-1, i, SIZE-tickLength-1); if (text != null) g.drawString(text, i-3, 21); } else { g.drawLine(SIZE-1, i, SIZE-tickLength-1, i); if (text != null) g.drawString(text, 9, i+3); } } } }}class Corner extends JComponent{ public void paintComponent(Graphics g) { g.setColor(new Color(230, 163, 4)); g.fillRect(0, 0, getWidth(), getHeight()); }} :o ,发完贴子,自己回家画去了,结果还真画出来了,和word的一样,嘿嘿。这么多朋友关注,谢了。非常感谢,结贴。 怎么写JAVA正则表达式 Java程序如何运行?? 数据库 com.microsoft.sqlserver.jdbc.SQLServerException: 该连接已关闭。 怎么判断一个字符串是另一个的子串 怎么把Double和Date互相转换? 求助 一个包装类的问题 两个接口有同样的方法,类实现接口的方法重写怎么写? 怎样将图片转为二进制流? 递归求数组中的最小值的下标 在java中如何实现弹出dos窗口,我的是win2000 编译提示
jSlider1.setMaximum(20);
jSlider1.setPaintLabels(true);
Hashtable h = new Hashtable(21);
for(int i=0;i<=20;i++)
{
h.put(new Integer(i), new JLabel("<html>|<br>"+i+"</html>"));
}
//jSlider1.setLabelTable( jSlider1.createStandardLabels(10));
jSlider1.setLabelTable( h);如果只要数字,使用jSlider1.setLabelTable( jSlider1.createStandardLabels(10));否则,使用jSlider1.setLabelTable( h);并把Jlabel的内容该为你想要的图形或文字
//// ScrollDemo.java //////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/*
* ScrollDemo.java requires:images/youngdad.jpeg
*/
public class ScrollDemo extends JPanel
implements ItemListener
{
private Rule columnView;
private Rule rowView;
private JToggleButton isMetric;
private ScrollablePicture picture;
public ScrollDemo()
{
ImageIcon david = createImageIcon("images/youngdad.jpeg");
columnView = new Rule(Rule.HORIZONTAL, true);
rowView = new Rule(Rule.VERTICAL, true);
if (david != null)
{
columnView.setPreferredWidth(david.getIconWidth());
rowView.setPreferredHeight(david.getIconHeight());
}
else{columnView.setPreferredWidth(320);rowView.setPreferredHeight(480);} JPanel buttonCorner = new JPanel();
isMetric = new JToggleButton("cm", true);
isMetric.setFont(new Font("SansSerif", Font.PLAIN, 11));
isMetric.setMargin(new Insets(2,2,2,2));
isMetric.addItemListener(this);
buttonCorner.add(isMetric); picture = new ScrollablePicture(david, columnView.getIncrement());
JScrollPane pictureScrollPane = new JScrollPane(picture);
pictureScrollPane.setPreferredSize(new Dimension(300, 250));
pictureScrollPane.setViewportBorder(BorderFactory.createLineBorder(Color.black));
pictureScrollPane.setColumnHeaderView(columnView);
pictureScrollPane.setRowHeaderView(rowView); pictureScrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,buttonCorner);
pictureScrollPane.setCorner(JScrollPane.LOWER_LEFT_CORNER,new Corner());
pictureScrollPane.setCorner(JScrollPane.UPPER_RIGHT_CORNER,new Corner()); setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
add(pictureScrollPane);
setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
} public void itemStateChanged(ItemEvent e)
{
if (e.getStateChange() == ItemEvent.SELECTED)
{rowView.setIsMetric(true);columnView.setIsMetric(true);}
else {rowView.setIsMetric(false);columnView.setIsMetric(false);}
picture.setMaxUnitIncrement(rowView.getIncrement());
}
protected static ImageIcon createImageIcon(String path)
{
java.net.URL imgURL = ScrollDemo.class.getResource(path);
if (imgURL != null) return new ImageIcon(imgURL);
else
{
System.err.println("Couldn't find file: " + path);
return null;
}
}
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("ScrollDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new ScrollDemo());
frame.pack();
frame.setVisible(true);
}
}
class ScrollablePicture extends JLabel implements Scrollable
{
private int maxUnitIncrement = 1;
private boolean missingPicture = false;
public ScrollablePicture(ImageIcon i, int m)
{
super(i);
if (i == null)
{
missingPicture = true;
setText("No picture found.");
setHorizontalAlignment(CENTER);
setOpaque(true);
setBackground(Color.white);
}
maxUnitIncrement = m;
}
public Dimension getPreferredSize()
{
if (missingPicture) return new Dimension(320, 480);
else return super.getPreferredSize();
}
public Dimension getPreferredScrollableViewportSize()
{
return getPreferredSize();
}
public int getScrollableUnitIncrement(Rectangle visibleRect,int orientation,int direction)
{
int currentPosition = 0;
if (orientation == SwingConstants.HORIZONTAL)currentPosition = visibleRect.x;
else currentPosition = visibleRect.y; if (direction < 0)
{
int newPosition=currentPosition-(currentPosition/maxUnitIncrement)*maxUnitIncrement;
return (newPosition == 0) ? maxUnitIncrement : newPosition;
} else
{
return ((currentPosition / maxUnitIncrement) + 1) *
maxUnitIncrement - currentPosition;
}
}
public int getScrollableBlockIncrement(Rectangle visibleRect,int orientation,int direction)
{
if (orientation == SwingConstants.HORIZONTAL) return visibleRect.width - maxUnitIncrement;
else return visibleRect.height - maxUnitIncrement;
}
public boolean getScrollableTracksViewportWidth() { return false; }
public boolean getScrollableTracksViewportHeight() { return false; }
public void setMaxUnitIncrement(int pixels) {maxUnitIncrement = pixels; }
}
class Rule extends JComponent
{
public static final int INCH = Toolkit.getDefaultToolkit().getScreenResolution();
public static final int HORIZONTAL = 0;
public static final int VERTICAL = 1;
public static final int SIZE = 35;
public int orientation;
public boolean isMetric;
private int increment;
private int units;
public Rule(int orientation, boolean m)
{
orientation = orientation;
isMetric = m;
setIncrementAndUnits();
}
public void setIsMetric(boolean isMetric)
{
this.isMetric = isMetric;
setIncrementAndUnits();
repaint();
}
private void setIncrementAndUnits()
{
if (isMetric){units = (int)((double)INCH / (double)2.54);increment = units;}
else{units = INCH;increment = units / 2;}
}
public boolean isMetric() { return this.isMetric; }
public int getIncrement() { return increment; }
public void setPreferredHeight(int ph){setPreferredSize(new Dimension(SIZE, ph));}
public void setPreferredWidth(int pw){setPreferredSize(new Dimension(pw, SIZE));}
public void paintComponent(Graphics g)
{
Rectangle drawHere = g.getClipBounds();
g.setColor(new Color(230, 163, 4));
g.fillRect(drawHere.x, drawHere.y, drawHere.width, drawHere.height);
g.setFont(new Font("SansSerif", Font.PLAIN, 10));
g.setColor(Color.black); int end = 0,start = 0,tickLength = 0;
String text = null;
if (orientation == HORIZONTAL)
{
start = (drawHere.x / increment) * increment;
end = (((drawHere.x + drawHere.width) / increment) + 1)*increment;
}
else
{
start = (drawHere.y / increment) * increment;
end = (((drawHere.y + drawHere.height) / increment) + 1)*increment;
}
if (start == 0)
{
text = Integer.toString(0) + (isMetric ? " cm" : " in");
tickLength = 10;
if (orientation == HORIZONTAL)
{
g.drawLine(0, SIZE-1, 0, SIZE-tickLength-1);
g.drawString(text, 2, 21);
}
else
{
g.drawLine(SIZE-1, 0, SIZE-tickLength-1, 0);
g.drawString(text, 9, 10);
}
text = null;
start = increment;
}
for (int i = start; i < end; i += increment)
{
if (i % units == 0) {tickLength = 10;text = Integer.toString(i/units);}
else {tickLength = 7; text = null;}
if (tickLength != 0)
{
if (orientation == HORIZONTAL)
{
g.drawLine(i, SIZE-1, i, SIZE-tickLength-1);
if (text != null) g.drawString(text, i-3, 21);
}
else
{
g.drawLine(SIZE-1, i, SIZE-tickLength-1, i);
if (text != null) g.drawString(text, 9, i+3);
}
}
}
}
}
class Corner extends JComponent
{
public void paintComponent(Graphics g)
{
g.setColor(new Color(230, 163, 4));
g.fillRect(0, 0, getWidth(), getHeight());
}
}
这么多朋友关注,谢了。非常感谢,结贴。