我JMenus在一個框架上添加了兩個:
JFrame frame = new JFrame();
//Menu :
menuBar = new JMenuBar();
menu = new JMenu("Fichier");
menu2 = new JMenu("Options");
JSeparator sep = new JSeparator(SwingConstants.VERTICAL);
JButton btn = new JButton();
btn.addActionListener(MyListener);
menuBar.add(menu);
menuBar.add(sep);
menuBar.add(menu2);
frame.setJMenuBar(menuBar);
這是我想要的結果:

這是我得到的結果:

請給我有關如何制作此框架的任何想法:

我嘗試用 a 做這個JWindow并添加 a JTextArea,但它占用了整個視窗的大小,我什至無法在上面寫字。
代碼JWindow:
public class Fenetre extends JWindow
{
int X;
int Y;
JTextArea ta;
Fenetre()
{
setBounds(50, 50, 300, 300);
ta = new JTextArea();
JScrollPane scrollPane = new JScrollPane(ta);
add(ta);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e)
{
X = e.getX();
Y = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e)
{
Point p = getLocation();
setLocation(p.x (e.getX() - X), p.y (e.getY() - Y));
}
});
this.setVisible(true);
}
}
uj5u.com熱心網友回復:
由于第一部分已經在 MadProgrammer 的評論中得到了回答,我將重點介紹第二部分。據我了解,您希望在框架中放置一個占據整個空間的文本區域。
步驟 1:創建內容窗格:
JPanel contentPane = new JPanel(new BorderLayout());
JTextArea console = new JTextArea(5, 30);
scrollPane = new JScrollPane(console);
contentPane.add(scrollPane, BorderLayout.CENTER);
第 2 步:將其添加到框架中
frame.setContentPane(contentPane);
因為沒有其他組件添加到框架中,框架布局管理器將允許這個 contentPane “伸展”并占據整個空間。
當框架首次呈現時,您將看不到滾動條。當您在文本區域中輸入文本時,您最終會在組件填充資訊時看到滾動條。或者,您可以使文本區域的大小(當前設定為 5 x 30)大于框架的大小,您將看到滾動條。例如,如果您手動調整框架的大小以使其小于 5 行(高)和 30 列(寬),您將看到滾動條呈現。我為什么要說這個?這樣您就可以決定文本區域的正確大小。
uj5u.com熱心網友回復:
不要使用JWindow它有焦點問題(實際上我認為這是設計使然,但我不熟悉細節)
相反,只需使用未裝飾的窗戶(假設您想要的是沒有窗戶裝飾)

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JTextArea ta = new JTextArea(20, 40);
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.add(new JScrollPane(ta));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
現在,如果您“需要”邊緣周圍的一些填充,請使用允許您指定填充的布局管理器或使用 EmptyBorder

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JTextArea ta = new JTextArea(20, 40);
JFrame frame = new JFrame();
JPanel content = new JPanel(new BorderLayout());
content.setBorder(new EmptyBorder(16, 16, 16, 16));
frame.setContentPane(content);
frame.setUndecorated(true);
frame.add(new JScrollPane(ta));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
我想你會發現:
- 使用 Swing 創建 GUI
- 如何制作框架(主視窗)
- 在容器內布置組件
一個更好的起點。
此外,將來,請提出 1 個具體問題,否則您可能會因“需要更多關注”而關閉問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385136.html
