你好,我正在制作一个简单的桌面应用程序,我正在设计用户界面。我正在使用NetBeans快速设计它。我确实看了很多网站和博客来寻找答案,但是找不到正确的答案。我是UI设计新手。您的答复/建议将不胜感激。
问题是:
我在应用程序中有一个JFrame。这个Jframe有几个JPanel,当用户登录应用程序时,这些JPanel被设置为可见/不可见状态。其中两个面板默认设置为不可见状态(我使用了将它们设置为False的Pre-Init代码)。
这个JFrame上的用户可以通过点击这个JFrame上的一个按钮来打开一个JDialog。(JFrame和JDialog在同一个包下定义在不同的类中)
一旦打开JDialog框,用户可以选择选择一些选项(J标签),然后单击创建按钮。(这个创建按钮是JDialog上的一个JLabel)。
一旦用户点击打开的JDialog的创建按钮,JDialog就会关闭(我在这个JLabel的鼠标释放事件上使用了Dialog.this.dispose())。)这将关闭JDialog。但是除了点击关闭这个JDialog之外,我想将JFrame上的JPanel的可见状态设置为true。
小结:当JDialog上的JLabel上有MouseReleaseEvent时,如何在JFrame上为JPanel设置Visible(true)?
我无法访问JDialog类上Jframe的JPanel。(如何访问Jpanel并使其在Jrame的JLabel上的MouseeEvent上特别可见)
提前感谢。
JDialog类是:
public class NewModelDialog extends javax.swing.JDialog {
public NewModelDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void initComponents() {
Create = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("New JDialog");
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
Create.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
CreateMouseReleased(evt);
}
});
getContentPane().add(Create, new org.netbeans.lib.awtextra.AbsoluteConstraints(624, 444, 40, 20));
pack();
setLocationRelativeTo(null);
}
private void CreateMouseReleased(java.awt.event.MouseEvent evt) {
NewModelDialog.this.dispose();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
NewModelDialog dialog = new NewModelDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
});
dialog.setVisible(true);
}
});
}
public javax.swing.JLabel Create; }
JFrameClass是:
public class GeneralEditorUI extends javax.swing.JFrame {
public GeneralEditorUI() {
initComponents();
setExtendedState(MAXIMIZED_BOTH);
}
private void initComponents() {
SymbolViewer = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("JFrameClass");
SymbolViewer.setBackground(new java.awt.Color(204, 204, 204));
SymbolViewer.setPreferredSize(new java.awt.Dimension(36, 36));
SymbolViewer.setVisible(false);
javax.swing.GroupLayout SymbolViewerLayout = new javax.swing.GroupLayout(SymbolViewer);
SymbolViewer.setLayout(SymbolViewerLayout);
SymbolViewerLayout.setHorizontalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addComponent(SymbolViewerLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(28, 28, 28)
.addComponent(Close_SymbolViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
);
SymbolViewerLayout.setVerticalGroup(
SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(SymbolViewerLayout.createSequentialGroup()
.addGroup(SymbolViewerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Close_SymbolViewer)
.addComponent(SymbolViewerLabel))
.addGap(0, 85, Short.MAX_VALUE))
);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GeneralEditorUI().setVisible(true);
}
});
}
public javax.swing.JPanel SymbolViewer;
}
这个Jframe有几个JPanel,当用户登录应用程序时,它们被设置为可见 /Invisible状态
您应该使用Card Layout
,并让布局管理面板的可见性。有关更多信息和示例,请阅读Swing教程中关于如何使用CardLayout的部分。
如何在JDialog上的JLabel上为JFrame上的JPanel设置可见(true),同时在JLabel上有一个MouseRelease事件
您可以使用JDialog
的getOwner()
方法来获取帧。一旦有了对框架的引用,您就可以调用方法来更改CardLayout
中的面板显示。
我在我的项目中添加了一个jDialog Swing表单,如图所示: 现在我想从jtextField获取到父JFrame的值,当我关闭这个JDialog时,我搜索了一下它,发现: 但是编译器告诉我在我的JDialog中没有名为
我有一个JFrame主窗口,里面有一个Register按钮,点击Register按钮,弹出JDialog窗口。 JDialog窗口有两个按钮->Register、Cancel,这两个按钮都必须做一些事情并关闭对话框窗口。 这就是我试过的。在Reg(对话框窗口)中-->btn取消:
问题内容: 我试图在弹出新框架时禁用“主” 。我想要它,所以您不能在该框架上单击或拖动任何东西。我尝试将新框架设为a ,但这并没有禁用其他框架。我还查看了有关此的另一篇文章,建议将其设置为a,但仍然无法正常工作。我真的需要帮助。谢谢。这是我正在使用的代码,他们有什么问题吗? 代表“主”框架。 问题答案: 您已经设置了JDialog#setModal或JDialog#ModalityTypes,可能
我有一个问题,就是在一次单击一个按钮的过程中处理两个JFrames。我有2个JFrames(SUC_Forms和add_suc),当SUC_Forms中的按钮“Add Records”被点击时,将显示另一个新的JFrame,它是add_suc JFrame,包含注册/归档的文本框。当我按ok验证并插入数据库中的所有数据时,将弹出一个JDialogbox进行确认。当我点击“OK”后,两个JFrame
问题内容: 我有一个使用JPA的项目J2SE。在某些JDialogs中,我确实返回并在类的构造函数中填充JTable,JComboBox,JList等。 因此,当我为这些对话框创建任何实例时,有时会很慢。 我认为使用SwingWorker和JProgressbar并创建一个(加载)来打开JDialogs是一个很好的解决方案,但是我不知道该怎么做。 我正在尝试这个。 如何打开JDialog并创建要使
问题内容: 我有一个主JFrame,其中具有用于不同功能的各种面板,人们可以在其中进行计算。我想在用户单击第一个计算按钮时打开一个新的JFrame并用作“输出”窗口(如果您熟悉它们,则类似于SPSS输出窗口)。 New JFrame将是完全独立的,并且将具有其自己的菜单栏。简单的JDialog并不是解决之道。 问题答案: 无法抗拒,简单地不同意答案); 和 我想在用户单击第一个计算按钮时打开一个新