0
A
回答
1
_「是一個短的例子嗎?「
是的,這裏...這是非常基本的。你需要做更多的事情。你會注意到我必須添加一個MouseMotionListener
到JPanel
作爲最上面的框架邊框,因爲當你從框架中移除裝飾時,你也會拿走這個功能。所以MouseMotionListener
使框架可以再次拖動。
如果您願意,您還必須實施調整大小。當您按下圖像時,我已經執行了System
exit()`。測試一下。你需要提供你自己的形象。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
public class UndecoratedExample {
static JFrame frame = new JFrame();
static class MainPanel extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 400);
}
}
static class BorderPanel extends JPanel {
JLabel stackLabel;
int pX, pY;
public BorderPanel() {
ImageIcon icon = new ImageIcon(getClass().getResource(
"/resources/stackoverflow1.png"));
stackLabel = new JLabel();
stackLabel.setIcon(icon);
setBackground(Color.black);
setLayout(new FlowLayout(FlowLayout.RIGHT));
add(stackLabel);
stackLabel.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
System.exit(0);
}
});
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
// Get x,y and store them
pX = me.getX();
pY = me.getY();
}
});
addMouseMotionListener(new MouseAdapter() {
public void mouseDragged(MouseEvent me) {
frame.setLocation(frame.getLocation().x + me.getX() - pX,
frame.getLocation().y + me.getY() - pY);
}
});
}
}
static class OutsidePanel extends JPanel {
public OutsidePanel() {
setLayout(new BorderLayout());
add(new MainPanel(), BorderLayout.CENTER);
add(new BorderPanel(), BorderLayout.PAGE_START);
setBorder(new LineBorder(Color.BLACK, 5));
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
frame.setUndecorated(true);
frame.add(new OutsidePanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
+0
謝謝你的一切。但哇,在Frame上添加按鈕需要付出很多努力。這絕對沒有簡單的方法嗎? – ManInMoon
相關問題
- 1. 如何最小化Java的JFrame窗口?
- 2. 半透明的JFrame邊境
- 3. Java中的JFrame窗口大小如何產生指定的窗口大小?
- 4. 如何把這個JFrame窗體
- 5. Java - 顯示最小化的JFrame窗口
- 6. 如何檢查的JFrame窗口中打開。如果JFrame的窗口中打開比在java中點擊之外,則閃爍的JFrame窗口
- 7. 變化的JFrame邊境的UIDefaults
- 8. 如何更改Java中現有JFrame窗口的setAlwaysOnTop()屬性?
- 9. 如何在彈出的JFrame窗口中打開Java類
- 10. 繪圖窗口中的JFrame
- 11. JFrame中的窗口動畫
- 12. Java編程,窗口大小的困境
- 13. 關閉JFrame窗口?
- 14. JFrame到窗口類
- 15. 更新JFrame窗口
- 16. 記事本++如何把窗口放在右邊?
- 17. 如何在JFrame窗口中定位JButton?
- 18. 如何關閉窗口而不是JFrame
- 19. 阻止Java同一窗口JFrame的多個開口
- 20. 如何將JFrame(java swing)窗口上傳到HTML頁面
- 21. 如何把可點擊的圖像jframe
- 22. 在Java中,如何保持原有窗口的焦點,儘管點擊JFrame的
- 23. 的Java:取消按鈕不會關閉該窗口的JFrame
- 24. 把一個div放在左邊:窗口的0(不是父母)
- 25. 如何把tabGroup內部窗口或查看鈦手機
- 26. 把窗口到前
- 27. JFrame窗口拒絕打開
- 28. JFrame最大化窗口
- 29. jframe不適合窗口
- 30. JButton最小化窗口(JFrame)
您可以'setUndecorated在框架上(真)',只是實現自己的頂部。 –
你要麼需要實現你自己的UI委託或未裝飾窗口並實現你的邊界 – MadProgrammer
在任何地方有一個簡短的例子嗎? – ManInMoon