弄了一天了,都没有搞定,郁闷~~~~~~~`
用过Excel吧,在它的主界面下,单击鼠标左键向下拖动时,可以看到右边的滚动条随着鼠标自动调整着大小,换句话说就是表格面板随着鼠标变大了.
现在用Swing实现类似功能,在一个面板中,我点击鼠标向下拖动时,右边的滚动条随着鼠标自动调整大小.
上,下,左,右,都要实现此功能,请问各位高手,要怎么解决啊,急急急~~~~~~~~~~
用过Excel吧,在它的主界面下,单击鼠标左键向下拖动时,可以看到右边的滚动条随着鼠标自动调整着大小,换句话说就是表格面板随着鼠标变大了.
现在用Swing实现类似功能,在一个面板中,我点击鼠标向下拖动时,右边的滚动条随着鼠标自动调整大小.
上,下,左,右,都要实现此功能,请问各位高手,要怎么解决啊,急急急~~~~~~~~~~
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;public class Test extends Frame { public JLabel bl = new JLabel(" b1 "); JPanel editor; Point lastLocation; public Test() { setLayout(new BorderLayout());
editor = new JPanel();
editor.setLayout(null);
editor.setPreferredSize(new Dimension(300, 400));
JScrollPane scroller = new JScrollPane();
// scroller.setAutoscrolls(true);
JViewport port = scroller.getViewport();
port.add(editor);
port.setScrollMode(1); add("Center", scroller); bl.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
if (lastLocation == null)
return;
JLabel ls = (JLabel) e.getComponent();
int incx = lastLocation.x - e.getX(), incy = lastLocation.y
- e.getY();
ls.setLocation(ls.getX() - incx, ls.getY() - incy);
}
});
bl.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
lastLocation = e.getPoint();
} public void mouseReleased(MouseEvent e) {
lastLocation = null;
} public void mouseClicked(MouseEvent e) {
System.out.println("c");
JLabel ls = (JLabel) e.getComponent();
ls.setForeground(Color.blue);
}
}); bl.setBounds(new Rectangle(100, 39, 55, 22));
bl.setBorder(new LineBorder(Color.BLUE, 1));
editor.add(bl);
} public static void main(String[] args) {
Test frame = new Test();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setSize(300, 400);
frame.setVisible(true);
}
}可以直接运行,我希望通过拖动中间的JLabel到下面,来实现想要的功能.请高手帮忙改改啊??
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.MouseInputListener;public class T {
public static void main(String[] args) {
P p = new P();
JFrame f = new JFrame();
f.getContentPane().add(new JScrollPane(p), BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}class P extends JPanel {
Point start = null;
Point end = null;
public P()
{
setPreferredSize(new Dimension(300, 300));
MouseInputListener m = new M();
addMouseListener(m);
addMouseMotionListener(m);
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
if (start != null && end != null) {
Rectangle rect = new Rectangle();
rect.setFrameFromDiagonal(start, end);
g.setColor(Color.LIGHT_GRAY);
((Graphics2D) g).fill(rect);
g.setColor(Color.GRAY);
((Graphics2D) g).draw(rect);
}
}
class M extends MouseInputAdapter {
public void mousePressed(MouseEvent e)
{
start = e.getPoint();
end = null;
repaint();
}
public void mouseDragged(MouseEvent e)
{
Dimension oldPrefSize = getPreferredSize();
int newWid = Math.max(oldPrefSize.width, e.getX()+20);
int newHei = Math.max(oldPrefSize.height, e.getY()+20);
if (newWid > oldPrefSize.width || newHei > oldPrefSize.height) {
setPreferredSize(new Dimension(newWid, newHei));
revalidate();
}
scrollRectToVisible(new Rectangle(e.getX(), e.getY(), 20, 20));
end = e.getPoint();
repaint();
}
}
}
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;public class jTable extends JFrame {
JTable table = new JTable();
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null; public jTable() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //驱动申明
con = DriverManager.getConnection(
"jdbc:oracle:thin:@cdfn01:1521:cdfn01", "erpcn", "erpcn"); //建立链接
String sql = "select * from emp"; //查询语句
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
} catch (Exception e) {
System.out.println(e.toString());
}
((DefaultTableModel) table.getModel()).setDataVector(getdata(),
gettitle());
JScrollPane jsp = new JScrollPane(table);
getContentPane().add(jsp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
} private Vector gettitle() {
try {
ResultSetMetaData rsm = rs.getMetaData();
Vector title = new Vector();
for (int i = 1; i <= rsm.getColumnCount(); i++) {
title.add(rsm.getColumnName(i));
}
return title;
} catch (Exception e) {
System.out.println(e.toString());
}
return new Vector();
} private Vector getdata() {
try {
ResultSetMetaData rsm = rs.getMetaData();
Vector data = new Vector();
while (rs.next()) {
Vector row = new Vector();
for (int i = 1; i <= rsm.getColumnCount(); i++) {
row.add(rs.getObject(i));
}
data.add(row);
}
return data;
} catch (Exception e) {
System.out.println(e.toString());
}
return new Vector();
} public static void main(String args[]) {
new jTable();
}
}