0
我遇到了一个严重的问题。当我尝试在我的JFrame上添加2个JRadioButton和一个JLabel时,它不起作用。他们没有显示,但其他元素呢。JFrame上没有显示某些Swing组件
有趣的是,我之前添加的其他组件(也是JLabels)在JFrame上可见。
将所有摆动组件添加到作为JFrame的内容窗格的容器“面板”上。
我正在使用Java DK 7 u67。
下面的代码:(向下滚动到/*这个代码不工作*/)
public class UDP_FileTransfer implements KeyListener, Runnable {
JFrame fenster;
Container panel;
JButton startBt, setPathBt;
JTextField portFeld, ipFeld, savePathFeld;
JLabel infoLbl, serverLbl, clientLbl;
JRadioButton server, client;
boolean typeIsServer = true;
int port = 4444;
long size = 0;
boolean serverStarted;
public static void main(String[] args){
new UDP_FileTransfer();
}
public UDP_FileTransfer(){
fenster = new JFrame();
fenster.setLayout(null);
fenster.addKeyListener(this);
fenster.setTitle("UDP File Transfer - Server");
fenster.setLocationRelativeTo(null);
fenster.setResizable(false);
fenster.setSize(400,150);
panel = fenster.getContentPane();
panel.setLayout(null);
panel.addKeyListener(this);
JLabel portLbl = new JLabel("Port: ");
portLbl.setBounds(10,10, 50,20);
panel.add(portLbl);
...
...
...
infoLbl = new JLabel("Status: Starten Sie den Server zuerst!");
infoLbl.setBounds(10, 70, 371,20);
infoLbl.setBorder(new LineBorder(Color.black, 1));
panel.add(infoLbl);
/* This code doesn't work */
JLabel typeLbl = new JLabel("Wählen Sie den Typ aus:");
typeLbl.setBounds(10,125,200,20);
panel.add(typeLbl);
client = new JRadioButton("Client");
client.setBounds(230,125,70,20);
panel.add(client);
client = new JRadioButton("Server");
client.setBounds(320,125,70,20);
panel.add(client);
/* End of non-working code */
fenster.setVisible(true);
fenster.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
的GUI看起来是这样的:Click me
的JradioButton将客户&服务器并且JLabel typeLbl应该出现在带边框的框下。
我希望你可以帮我...
不要设置您的组件的边界。这是布局经理的角色。使用布局管理器。 –
'fenster.setLayout(null);'1)Java GUI必须在不同的语言环境中使用不同的PLAF来使用不同的OS,屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 2)以最小尺寸提供ASCII艺术或简单的GUI图形*图形,并且如果可调整大小,则具有更大的宽度和高度。 –