sách gpt4 ai đã đi

java - 为什么带有两个 Jpanel 的父 Jpanel 不只显示第一个 Show 本身而不显示其两个子 Jpanels?

In lại 作者:行者123 更新时间:2023-12-01 22:19:43 29 4
mua khóa gpt4 Nike

我正在尝试创建一个带有另外两个 JPanel của JPanel,但是,当时,当我要显示主要内容时JPanel,它只显示主Jpanel上的第一个Jpanel.

通过以下示例,您将更好地理解这个问题:

我想要这样的东西:

Figure 1

我想做的两件事都很好;即使如此,如果我尝试将它们放在同一个 JPanel 上,它也不会。

在第一个 JPanel 上,我想添加一个 JFileChooser,在另一部分中,我想添加一个 Drag & Drop TextArea .

我试图用这堆代码做上面提到的事情,并且只显示第一个Jpanel. 我缺少什么?

我创建了一个Main Jpanel:

JPanel container = new JPanel();
container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));

然后,我创建了两个 Jpanel 将它们放入 Main Jpanel ở giữa:

JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout());

JButton button = new JButton("Selecciona el arxiu .txt");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser fileChooser = new JFileChooser("C:/Users/Joan/Desktop/");
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
SelectedFile = fileChooser.getSelectedFile();
//Amb el SelectedFile.getName(); Sabem el nom del arxiu.
BufferedReader br = null;

thử {
String sCurrentLine;
br = new BufferedReader(new FileReader(SelectedFile));

while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} bắt (IOException e) {
e.printStackTrace();
} finally {
thử {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
});
panel1.add(button);

第二个 Jpanel 看起来像:

JPanel panel2 = new JPanel();
panel2.setBackground(Color.red);
panel2.add(
new JLabel("Drop a list from your file chooser here:"),
BorderLayout.NORTH
);
ta = new JTextArea();
ta.setBackground(Color.white);
panel2.add(ta, BorderLayout.CENTER);

dt = new DropTarget(ta, this);

当时,我想将这两个 Jpanel Địa điểm Main Jpanel 中。我就是按这个方法做的然后,我将其设置为可见:

container.add(panel1, BorderLayout.NORTH);
container.add(panel2, BorderLayout.SOUTH);
container.setVisible(true);

但是,问题是当我尝试启动该程序时,它只显示第一个 Jpanel (Jpanel1),而其他 Jpanel 则不显示。

我做错了什么或者我误解了什么?

1 Câu trả lời

您可能想尝试使用 GridLayout,而不是在容器上使用 BoxLayout.

container.setLayout(new GridLayout(0, 2));

然后只需添加它们:

container.add(panel1);
container.add(panel2);

biên tập:

完整示例:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Side {


public static void main(String[] args) {

JFrame frame = new JFrame("JFrame");
JPanel container = new JPanel();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.setBackground(Color.blue);
panel2.setBackground(Color.red);

container.setLayout(new GridLayout(0, 2));

container.add(panel1);
container.add(panel2);

frame.getContentPane().add(container, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);

}
}

关于java - 为什么带有两个 Jpanel 的父 Jpanel 不只显示第一个 Show 本身而不显示其两个子 Jpanels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155035/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com