2013-02-13 4 views
2

JRadioButtons에 머문 후에 마우스를 올릴 때까지 표시되지 않는 문제가 있습니다. 전에이 문제를 살펴본 결과 대부분의 사람들이 layouts을 사용하여 해결했다고합니다. 그러나, 나는 숙제를 위해 그들을 사용하기로되어 있지 않다. 완전히 새로운 것 그래픽와 함께 Java 나는 정말로 고민 중이다. 어떤 아이디어? 아무거나는 평가된다.JRadioButtons가 작동하지 않습니다.

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

'과제'라는 단어를 사용함으로써 나는 당신이 수업에 있다고 생각하고 누군가가 당신을 가르치고 있다고 생각하지만, 디자인은 끔찍합니다. 필드에 액세스 할 수 없으므로 main 메소드에서 모든 코드를 실행하지 마십시오. 메인 메소드에 코드를 넣으려면 모든 메소드를 메인 메소드에 넣어야합니다.이 메소드는 분명히 나쁜 디자인이며 특히 객체 지향 언어입니다. – Jimmt

답변

4

문제는 JRadioButtons들이 추가 할 때 이미 표시되어있는 JFrame으로 색칠되지 않는 것입니다.

당신은 당신이 컨테이너에 모든 구성 요소를 추가 후 JFrame#setVisible를 호출해야합니다

f.setVisible(true); 

은 제외 :는 절대 위치 (null 레이아웃)를 사용하지 마십시오 대신 layout manager를 사용합니다. 레이아웃 관리자를 사용하면 위치 구성 요소 크기가 & 인 위치가 필요하지 않습니다.

+0

전후에는 차이가 없다고 확신합니다. 당신이 그것을 추가하거나, 당신이 그것을 보았거나, 당신이 그것을 보았고, 당신이 그것을 추가했지만, 어느 쪽이든 그것이 너무 빨리 일어나서 발견 되었다면. – Jimmt

+0

@Jimmt이 질문에 대한 답변 – mKorbel

+0

그의 문제는 JRadioButtons가 나타나지 않는다는 것입니다. – Jimmt