2013-02-13 33 views
2

我在哪裏我的JRadioButtons不會出現,直到將鼠標懸停在的問題。我查過這個問題之前,似乎大多數人已經解決了它使用layouts。但是,我不應該將其用於我的任務,是完全新的圖形的Java我真的很掙扎。有任何想法嗎?任何感謝。JradioButton將不工作

import java.awt.GridLayout; 

import javax.swing.*; 
public class InsuarancePolicyApp { 

public static void main(String[] args) { 

//JFrame 
JFrame f = new JFrame(); 
f.setVisible(true); 
f.setSize(800, 600); 
f.setLayout(null); 
f.setResizable(false); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.setTitle("Insurance Policy Application"); 

//JButtons 
JButton addClient = new JButton("Add Client"); 
JButton openPolicy = new JButton("Open Policy"); 
f.getContentPane().add(addClient); 
f.getContentPane().add(openPolicy); 
openPolicy.setSize(300, 60); 
addClient.setSize(380,60); 
addClient.setLocation(30, 180); 
openPolicy.setLocation(450, 180); 

//JTextField 
JTextField name = new JTextField("Name: "); 
f.getContentPane().add(name); 
name.setLocation(30,30); 
name.setSize(380, 30); 

//JList 
String[] clientarray = {"Mark Mywords", "Jim Class", "Stan Dupp", "Mel Onhead", "Bob's Yoyo Shop", "Toys Aren't Us", "The Fish Rack"}; 
JList clients = new JList(clientarray); 
f.getContentPane().add(clients); 
clients.setLocation(30, 280); 
clients.setSize(380, 250); 

String[] policyarray = {"Policy 002354","Policy 005345", "Depreciable Policy 0789423", "Expirable Policy 009724"}; 
JList policies = new JList(policyarray); 
f.getContentPane().add(policies); 
policies.setLocation(450, 280); 
policies.setSize(300, 250); 


//JScrollPane 
JScrollPane clientScroll = new JScrollPane(clients, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
f.getContentPane().add(clientScroll); 
clientScroll.setLocation(30,280); 
clientScroll.setSize(380,250); 


JScrollPane policiesScroll = new JScrollPane(policies, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
f.getContentPane().add(policiesScroll); 
policiesScroll.setLocation(450,280); 
policiesScroll.setSize(300,250); 

//JradioButons 
JRadioButton b1 = new JRadioButton("Company",false); 
JRadioButton b2 = new JRadioButton("Individual",false); 
JRadioButton b3 = new JRadioButton("Standard",false); 
JRadioButton b4 = new JRadioButton("Depreciable",false); 
JRadioButton b5 = new JRadioButton("Expirable",false); 

//ButtonGroups 
ButtonGroup clientsGroup = new ButtonGroup(); 
b1.setLocation(120, 70); 
b1.setSize(100,30); 
b2.setLocation(260, 70); 
b2.setSize(100,30); 
f.getContentPane().add(b2); 
f.getContentPane().add(b1); 
clientsGroup.add(b1); 
clientsGroup.add(b2); 


ButtonGroup policiesGroup = new ButtonGroup(); 
b3.setLocation(600, 10); 
b4.setLocation(600, 60); 
b5.setLocation(600, 110); 
b3.setSize(100,60); 
b4.setSize(100,60); 
b5.setSize(100,60); 
f.getContentPane().add(b3); 
f.getContentPane().add(b4); 
f.getContentPane().add(b5); 
policiesGroup.add(b3); 
policiesGroup.add(b4); 
policiesGroup.add(b5); 

//Jlabel 
JLabel label = new JLabel("Type:"); 
f.getContentPane().add(label); 
label.setLocation(30, 55); 
label.setSize(60,60); 

JLabel label2 = new JLabel("Type:"); 
f.getContentPane().add(label2); 
label2.setLocation(545, 10); 
label2.setSize(60,60); 
} 
} 
+1

通過您所說的「任務」我想你是在一個類中,有人教你的,但是,設計是可怕的。您不會在主要方法中運行所有代碼,因爲您無法訪問字段。將代碼放在主要方法中需要將所有代碼放在明顯不好的主要方法中,尤其是在面向對象的語言中。 – Jimmt 2013-02-13 20:30:43

回答

4

的問題是,JRadioButtons沒有被塗爲JFrame加入時,他們已經顯示。

你需要調用JFrame#setVisible後,你所有的組件添加到容器:

f.setVisible(true); 

旁白:不要使用絕對定位(null佈局),使用layout manager代替。使用佈局管理器不需要設置零件尺寸&位置。

+0

我很確定之前/之後沒有區別。它可以是你添加它,然後你看到它,或者你看到它,然後你添加它,但無論哪種方式它發生得太快而不被注意。 – Jimmt 2013-02-13 20:32:55

+0

@Jimmt確保回答這個問題 – mKorbel 2013-02-13 20:35:19

+0

他的問題是JradioButton將不露面,是不是? – Jimmt 2013-02-13 20:36:25