我想只有菜單欄和可移動的主窗口。如何使窗口全部(1)無標題(2)可移動(3)僅限於菜單欄[如何通過菜單欄監聽鼠標事件]
這將是更好的有一些窗口框架,拖動。但看起來在Java中是不可能的。所以,我想直接聽鼠標事件,但不能聽到他們:
package tests.javax.swing;
import java.awt.Dimension;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Try_NarrowWindow {
private static final Logger log = LoggerFactory.getLogger(Try_NarrowWindow.class);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@SuppressWarnings({ "serial" })
@Override
public void run() {
JFrame frame = new JFrame() {
Point mouseDownCompCoords;
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setUndecorated(true);
setMenuBar(new MenuBar() {{
add(new Menu("File") {{
add(new MenuItem("Open..."));
add(new MenuItem("Close"));
addSeparator();
add(new MenuItem("Exit") {{
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}});
}});
add(new Menu("Edit") {{
add(new MenuItem("Copy"));
add(new MenuItem("Cut"));
add(new MenuItem("Paste"));
}});
}});
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
log.info("mouseReleased({})", e);
mouseDownCompCoords = null;
}
public void mousePressed(MouseEvent e) {
log.info("mousePressed({})", e);
mouseDownCompCoords = e.getPoint();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
log.info("mouseDragged({})", e);
Point currCoords = e.getLocationOnScreen();
setLocation(currCoords.x - mouseDownCompCoords.x, currCoords.y - mouseDownCompCoords.y);
}
});
}};
frame.setLocation(0,0);
frame.pack();
frame.setSize(new Dimension((int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()*2/3, frame.getHeight()));
frame.setVisible(true);
}
});
}
}
'MenuBar'不'擴展Component'。 – 2014-10-28 07:12:09
@SuzanCioc,什麼?不要在Swing應用程序中使用AWT組件。 Swing組件以「J」開頭。 – camickr 2014-10-28 14:02:43