[질문] JLabel과 JPanel에 관한 질문입니다! (소스도 넣었어요)
해솔
label = new JLabel(0, label.CENTER);
label.setFont(font);
label.setBackground(Color.white);
label.setForeground(Color.pink);
background.add(BorderLayout.NORTH, label);레이블을 이렇게 처리했더니 저런 모양이 나옵니다.
글자 색상은 바뀌었는데.. 주변 배경색깔이 제가 원하는하얀색으로 바뀌지 않아서요.
무엇이 잘못된건지 모르겠습니다.ㅠㅠ
그리고 또 하나 질문은요.
소스를 만들기를 JPanel mainPanel을 만들어 GridLayout(4,4)를 써서 1~÷버튼까지 채웠구요
JPanel sidePanel을 만들고 BoxLayout.Y_AXIS 로 해서 AC와 = 버튼을 채웠습니다.
JPanel background 도 BorderLayout으로 만들어 mainPanel은 CENTER로, sidePanel은 EAST로, 위의 label은 NORTH로 넣었습니다.
그래서 이렇게 나왔는데 제가 원하는 모양은 이게 아니었거든요.ㅠ_ㅠ
= 부분만 너무 조그만데..
사실 애초에 GridLayout을 쓸 때, 5*4로 만들어서 (5,3) (5,4) 의 안쓰는 부분은 버튼을 안만들면 좋을텐데.. 모두 균등한 크기로요..
이게 가능한 말인지도 모르겠고.ㅠㅠ
가능하지 않다면.. 위의 그림처럼 아예 2번처럼 = 버튼을 크게 만들고 싶거든요..
어떻게 고쳐야 제가 원하는 모양으로 만들 수 있는지 가르쳐주세요^-^;; ㅠ_ㅠ;(소스 그래픽 관련 부분만 올리겠습니다~) JFrame frame;
JLabel label;
JPanel mainPanel, sidePanel;
JButton b1, b2, b3, b4, b5 ,b6 ,b7, b8, b9, b0,
bSum, bMin, bMul, bDiv, bEq, bDot, bAC, bBack;
frame = new JFrame(Calculater);
BorderLayout layout=new BorderLayout();
JPanel background=new JPanel(layout); GridLayout grid = new GridLayout(4,4);
grid.setVgap(1);
grid.setHgap(2);
mainPanel = new JPanel(grid);
background.add(BorderLayout.CENTER, mainPanel);
Font font = new Font(Dialog, Font.BOLD, 30); b1 =new JButton(1);
b1.setFont(font);
mainPanel.add(b1);
b2 = new JButton(2);
b2.setFont(font);
mainPanel.add(b2);
b3 = new JButton(3);
b3.setFont(font);
mainPanel.add(b3);
bSum = new JButton(+);
bSum.setFont(font);
mainPanel.add(bSum);
b4 = new JButton(4);
b4.setFont(font);
mainPanel.add(b4);
b5 = new JButton(5);
b5.setFont(font);
mainPanel.add(b5);
b6 = new JButton(6);
b6.setFont(font);
mainPanel.add(b6);
bMin = new JButton(-);
bMin.setFont(font);
mainPanel.anPanel.add(bMin);
b7 = new JButton(7);
b7.setFont(font);
mainPanel.add(b7);
b8 = new JButton(8);
b8.setFont(font);
mainPanel.add(b8);
b9 = new JButton(9);
b9.setFont(font);
mainPanel.add(b9);
bMul = new JButton(×);
bMul.setFont(font);
mainPanel.add(bMul);
bDot = new JButton(.);
bDot.setFont(font);
mainPanel.add(bDot);
b0 = new JButton(0);
b0.setFont(font);
mainPanel.add(b0); bBack = new JButton(노노);
bBack.setFont(font);
mainPanel.add(bBack);
bDiv = new JButton(÷);
bDiv.setFont(font);
mainPanel.add(bDiv);
sidePanel = new JPanel();
sidePanel.setLayout(new BoxLayout(sidePanel, BoxLayout.Y_AXIS));
bAC = new JButton(AC);
bAC.setFont(font);
sidePanel.add(bAC);
bEq = new JButton(=);
bEq.setFont(font);
sidePanel.add(bEq);
label = new JLabel(0, label.CENTER);
label.setFont(font);
label.setBackground(Color.black);
label.setForeground(Color.pink);
background.add(BorderLayout.NORTH, label);
background.add(BorderLayout.EAST, sidePanel); frame.getContentPane().add(background);
frame.setBounds(50,50,300,300);
frame.pack();
frame.setVisible(true);
-
리라
좀 어려웠는데 덕분에 무사히 과제를 마쳤습니다^-^ 정말 감사드려요~!!!!!!
-
스위트초코
setPreferenceSize()를 써보시거나, 정 아니면, 패널을 하나 더 만들어서 붙이고, 레이아웃은 GridLayout(0,2)을 쓰고, 그 위에 패널을 하나 더 붙이신다음, 그것도 레이아웃은 GridLayout(0,2)로 하시고 버튼들을 붙이시면 될 듯 싶네요.
-
외국녀
님아 정말 감사드려요~!! 배경은 하얀색으로 예쁘게 되었습니다^-^ 그런데 = 버튼이 아직 문제예요~ 수다님께서 가르쳐주신대로 beq.setsize(bac.getsize().width, bac.getsize().height); 요렇게 했는데도 버튼 크기가 안바뀌네요ㅠ_ㅠ 암튼 너무 감사드려요!!! ^-^***
-
VE
가장 간단하게는 버튼의 크기를 늘리는 것입니다. 즉, 다른 버튼(예를 들면 AC 버튼의 크기를 받아서) 그 크기만큼 =버튼의 크기를 설정하시면 됩니다. bEq.setSize(bAC.getSize().width, bAC.getSize().Height)
-
앵겨쪼
라벨의 색상은 글자부분에만 적용됩니다. 따라서 배경을 흰색으로 하시고 싶으시면, background의 North부분에 패널을 붙이시고, 그 패널의 색상을 흰색(setBackgound(Color.WHITE))으로 하시고 그 패널 위에 라벨을 붙이시기 바랍니다.