Java 内部JFrames
我想知道如何在swing中显示内部框架。这意味着,当需要JFrame时,通常我所做的是Java 内部JFrames,java,swing,jframe,Java,Swing,Jframe,我想知道如何在swing中显示内部框架。这意味着,当需要JFrame时,通常我所做的是 new MyJFrame().setVisible(true); 假设前面的表单也应该显示。当显示这个新框架时,任务栏上会显示另一个新图标。这听起来像是两个独立的应用程序在一个应用程序中运行。我希望避免显示该图标,并将两个框架显示为一个应用程序中的两个。谢谢一个应用程序只有一个JFrame 可以在JFrame中显示多个JPanel 或者,正如垃圾神所指出的,一个JDesktopFrame中可以有多个jint
new MyJFrame().setVisible(true);
假设前面的表单也应该显示。当显示这个新框架时,任务栏上会显示另一个新图标。这听起来像是两个独立的应用程序在一个应用程序中运行。我希望避免显示该图标,并将两个框架显示为一个应用程序中的两个。谢谢一个应用程序只有一个JFrame
可以在JFrame中显示多个JPanel
或者,正如垃圾神所指出的,一个JDesktopFrame中可以有多个jinternalframe。一个应用程序有一个JFrame
可以在JFrame中显示多个JPanel
或者,正如垃圾神指出的,在一个JDesktopFrame中可以有多个jinternalframe
…希望避免显示该图标,并在一个应用程序中同时显示两个帧
另一种解决方案是将第二个和后续的自由浮动元素放在JDialog中
例如,使用框架和对话框来保存额外的内容
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FrameTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
initGui();
}
});
}
public static void initGui() {
final JFrame f = new JFrame("Frame Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel gui = new JPanel(new GridLayout(0,1,5,5));
final Content c = new Content();
JButton frame = new JButton("Frame");
frame.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFrame f2 = new JFrame("Content");
f2.add(c.getContent());
f2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f2.pack();
f2.setLocationByPlatform(true);
f2.setVisible(true);
}
});
gui.add(frame);
JButton dialog = new JButton("Dialog");
dialog.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JDialog d = new JDialog(f);
d.add(new Content().getContent());
d.pack();
d.setLocationByPlatform(true);
d.setVisible(true);
}
});
gui.add(dialog);
f.add(gui);
f.pack();
f.setVisible(true);
}
}
class Content {
public Component getContent() {
JPanel p = new JPanel();
p.add(new JLabel("Hello World!"));
return p;
}
}
…希望避免显示该图标,并在一个应用程序中同时显示两个帧
另一种解决方案是将第二个和后续的自由浮动元素放在JDialog中
例如,使用框架和对话框来保存额外的内容
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class FrameTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
initGui();
}
});
}
public static void initGui() {
final JFrame f = new JFrame("Frame Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel gui = new JPanel(new GridLayout(0,1,5,5));
final Content c = new Content();
JButton frame = new JButton("Frame");
frame.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFrame f2 = new JFrame("Content");
f2.add(c.getContent());
f2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f2.pack();
f2.setLocationByPlatform(true);
f2.setVisible(true);
}
});
gui.add(frame);
JButton dialog = new JButton("Dialog");
dialog.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JDialog d = new JDialog(f);
d.add(new Content().getContent());
d.pack();
d.setLocationByPlatform(true);
d.setVisible(true);
}
});
gui.add(dialog);
f.add(gui);
f.pack();
f.setVisible(true);
}
}
class Content {
public Component getContent() {
JPanel p = new JPanel();
p.add(new JLabel("Hello World!"));
return p;
}
}
请在此发布显示非提问问题的简短可运行代码,以及显示最近示例和的简短可运行代码的基本规则。请在此发布显示非提问问题的简短可运行代码,以及显示最近示例和的简短可运行代码的基本规则。欢迎使用。很高兴我能提供一个适合用例的替代策略:-我尝试如下使用JDialog。这里frame是一个JFrame,我使用了Netbeans,刚刚创建了一个单独的JFrame右键单击->新建->JFrame表单。。我还添加了一些按钮和文本字段,并创建了该JFrame的一个实例。然后将该实例放入JDialog。MyJFrame=新的MyJFrame;JDialog d=新的JDialogframe;d、 设置VisibleTrue;但是对话框在没有框架的情况下是可见的。我看不到我放在JFrame中的任何按钮或文本字段。我指的是不要将对话框放入框架中。那不行。相反,把你已经放进框架的组件放进对话框中。我按照你提到的做了。但结果与JDialg一样。对话框d=新对话框新框架//frame是JFrame d.setVisibletrue;你能让我知道任何样本代码工作或任何链接请。非常感谢你。。。安德鲁。。这里是我得到的jdialogd=newjdialogf的要点;d、 addnew Content.getContent;//这是我错过的东西。我把我的面板和其他组件放在d包里;d、 setLocationByPlatformtrue;d、 设置VisibleTrue;它成功了,我的问题完全解决了。。我感谢你的帮助。。好极了:不客气。很高兴我能提供一个适合用例的替代策略:-我尝试如下使用JDialog。这里frame是一个JFrame,我使用了Netbeans,刚刚创建了一个单独的JFrame右键单击->新建->JFrame表单。。我还添加了一些按钮和文本字段,并创建了该JFrame的一个实例。然后将该实例放入JDialog。MyJFrame=新的MyJFrame;JDialog d=新的JDialogframe;d、 设置VisibleTrue;但是对话框在没有框架的情况下是可见的。我看不到我放在JFrame中的任何按钮或文本字段。我指的是不要将对话框放入框架中。那不行。相反,把你已经放进框架的组件放进对话框中。我按照你提到的做了。但结果与JDialg一样。对话框d=新对话框新框架//frame是JFrame d.setVisibletrue;你能让我知道任何样本代码工作或任何链接请。非常感谢你。。。安德鲁。。这里是我得到的jdialogd=newjdialogf的要点;d、 addnew Content.getContent;//这是我错过的东西。我把我的面板和其他组件放在d包里;d、 setLocationByPlatformtrue;d、 设置VisibleTrue;它成功了,我的问题完全解决了。。我感谢你的帮助。。非常好:谢谢你,吉尔伯特先生。但问题是,如果我使用JInternalFrames和JDesktop窗格,内部框架将被限制在应用程序窗口中,并且只能在桌面窗格中移动:。那么应用程序的外观可能并不像我希望的那样。但我认为JDialg最适合解决我的问题。如果可以的话,请告诉我如何使用JDialog。@Aash-Maharoon:有关JDialog的解释,请参阅安德鲁·汤普森的答案。谢谢你,吉尔伯特先生。但问题是,如果我使用JInternalFrames和JDesktop窗格,内部框架将被限制在应用程序窗口中,只能在desktoppane内移动:。然后应用程序
可能不是我所希望的。但我认为JDialg对我的问题是最好的。如果可以,请让我知道如何使用JDialog。@Aash-Maharoon:有关JDialog的解释,请参阅安德鲁·汤普森的答案。