GUI Swing Java中的问题 [英] Problem in GUI Swing Java
本文介绍了GUI Swing Java中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了一个带有标签窗格的秋千框架.
从该帧中,我移到具有JDeskTop窗格的下一帧.我还创建了Socket和ServerSocket的对象,并将其保持在侦听模式.
我既希望框架可见,又要同时使用两者.
但是每当我执行代码系统时,就会被绞死.
当我删除聆听模式时,它将正确执行.
请帮帮我..
我的代码如下
I have developed a frame in swing containing tabbedpane.
From that frame i move to next frame having JDeskTop Pane. Also i have created object of Socket and ServerSocket and keep it in listening mode.
I want both the frame visible and want to use both.
But whenever i am executing code system is getting hanged.
When i remove listening mode then it executed properly.
please help me..
My code is as follow
import java.awt.*;
import javax.swing.*;
class TabbedPaneExample extends JFrame
{
private JTabbedPane tabbedPane;
public TabbedPaneExample()
{
Container c=getContentPane();
Toolkit toolkit = Toolkit.getDefaultToolkit ();
Dimension dim = toolkit.getScreenSize();
setSize(dim.width,dim.height);
setTitle("Network Monitoring System");
setBackground(Color.gray );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
c.add(topPanel );
tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Monitoring", new Monitor());
topPanel.add( tabbedPane, BorderLayout.CENTER );
}
public static void main( String args[] )
{
TabbedPaneExample mainFrame = new TabbedPaneExample();
mainFrame.setVisible( true );
}
}
监视器类..
Monitor Class..
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Monitor extends JPanel implements ActionListener
{
JLabel welcome;
JButton start,stop;
JComboBox ipCombo;
Monitor()
{
setLayout( null );
Toolkit toolkit = Toolkit.getDefaultToolkit ();
Dimension dim = toolkit.getScreenSize();
Font f=new Font("Verdana",Font.BOLD,20);
welcome = new JLabel("Welcome To Remote Monotoring System");
welcome.setBounds( dim.width/4, 30, 550, 80 );
welcome.setFont(f);
add(welcome);
ipCombo=new JComboBox();
ipCombo.addItem("192.168.1.16");
ipCombo.addItem("second");
ipCombo.addItem("third");
ipCombo.setBounds(100,100,150,20);
add(ipCombo);
start=new JButton("Start");
start.setBounds(100,140,80,30);
add(start);
start.addActionListener(this);
stop=new JButton("Stop");
stop.setBounds(250,140,80,30);
add(stop);
stop.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==start)
{
//dispose();
new AddingInternalFramestoaJDesktopPane();
System.out.println("Start...");
}
else if(ae.getSource()==stop)
System.out.println("Stop...");
}
}
将内部框架添加到桌面窗格中...
Adding Internal Frames To Desktop Pane...
import java.awt.BorderLayout;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import java.awt.*;
import javax.swing.*;
public class AddingInternalFramestoaJDesktopPane {
JFrame frame;
JDesktopPane desktop;
public AddingInternalFramestoaJDesktopPane()
{
String port = JOptionPane.showInputDialog("Please enter listening port");
System.out.println(port);
drawGUI();
//new ConnectionInitiator(Integer.parseInt(port),desktop);
initialize(Integer.parseInt(port));
}
void drawGUI()
{
frame = new JFrame();
frame.setTitle("DeskTop Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desktop = new JDesktopPane();
JInternalFrame internalFrame = new JInternalFrame("Can Do All", true, true, true, true);
desktop.add(internalFrame);
internalFrame.setBounds(25, 25, 200, 100);
JLabel label = new JLabel("Mahavir Demo", JLabel.CENTER);
internalFrame.add(label, BorderLayout.CENTER);
internalFrame.setVisible(true);
frame.add(desktop, BorderLayout.CENTER);
Toolkit toolkit = Toolkit.getDefaultToolkit ();
Dimension dim = toolkit.getScreenSize();
frame.setSize(dim.width,dim.height-30);
//frame.setSize(500, 300);
frame.setVisible(true);
}
public void initialize(int port){
try {
ServerSocket sc = new ServerSocket(port);
//Show Server GUI
//drawGUI();
//Listen to server port and accept clients connections
while(true){
Socket client = sc.accept();
System.out.println("New client Connected to the server");
//Per each client create a ClientHandler
// new ClientHandler(client,desktop);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
推荐答案
使用JDialog代替JFrame并使用 ^ ]保持在最前面.
其他解决方案:应在框架"出现时调用Window.toFront().可能有停电.
Use JDialog instead of JFrame and use setModalityType(Dialog.ModalityType type) [^] to keep it in front.
Other solution: call Window.toFront() when the Frame should appear. This might have blackouts.
I = Swing的新手B4m,我制作了JComponent的子类.现在,它是一个绘制图像并听鼠标的类.我的问题是:只有当我最小化,最大化或类似的东西时,我的班级才会上漆.我需要从构造函数中调用哪种方法才能正确绘制我的类?谢谢. ---
I=B4m new to Swing and I made a subclass of JComponent. For now its a class that paints a image and listen to the mouse. My problem is: my class gets painted only when I minimize, maximize or something like that. Which method do I need call from constructor to get my class painted correctly? Thanks. ---
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent
这篇关于GUI Swing Java中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文