JButton과 같은 Swing 구성 요소를 JPanel에 추가하면 'preferred size'로 렌더링됩니다.Swing 구성 요소의 페인트 크기를 얻는 방법은 무엇입니까?
그러나 바람직한 크기는 실제로 채색 된 단추보다 큽니다. 주변에는 보이지 않는 경계가있는 것처럼 보입니다. 내가 빨간색 인 btn1의 "PREFERREDSIZE을"그린
public class TestPanel extends JPanel {
JButton btn1 = new JButton("Test1");
JButton btn2 = new JButton("Test2");
public TestPanel() {
this.add(btn1);
this.add(btn2);
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
Dimension dim = btn1.getPreferredSize();
g.drawRect(btn1.getX(), btn1.getY(), (int)(dim.getWidth()), (int)(dim.getHeight()));
}
}
사항은 preferredSize가 실제로 입증하기 위해 ...
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestPanel pnl = new TestPanel();
frame.getContentPane().add(pnl);
frame.pack();
frame.setVisible(true);
여기 내 테스트 패널입니다 : 여기
내 테스트 패널 간단한 프레임입니다 버튼 자체보다 큽니다.내 질문은 어떻게 그려진 버튼이 아닌하는 JButton의 preferredSize가의 폭과 높이를 결정할 수있다?
도움을 주시면 감사하겠습니다.
UPDATE
실제로 모든 스윙 구성 요소에 대한 작업이 필요하기 때문에, 여기에 더 많은 구성 요소와 스크린 샷입니다.
표시 할 위젯의 "실제"크기가 내 응용 프로그램에 중요하다는 것을 결정해야합니다.
나는 믿는다 (I 확실 상점 아니에요) 즉'JButton'의 구현의 일부
getbounds()
를 사용그래서 "숨겨진"것입니다 (여분의 경계가 아마도 코드를 읽는 계산 방법을 확인할 수 있습니다). 어쨌든, 그 가치는 무엇을 필요로합니까? 같은 것을 달성하는 또 다른 방법이있을 수 있습니다. – asermax
@asermax JButton (또는 Swing 위젯/JComponent)을 창의 왼쪽이나 오른쪽 위나 아래에서 정확하게 10 픽셀 위치 시키려면 어떻게해야할까요? 현재 JButton은 가장자리에서 보이지 않는 테두리 인 10 픽셀입니다. 프로그래밍 방식으로 보이지 않는 부분의 너비/높이를 결정하는 방법이 있어야합니까? –
내가 할 수있는 유일한 방법은 ['setBorderPainted'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#setBorderPainted (boolean))를 사용하여 보이지 않는 테두리가 실제로는 테두리이며 구성 요소 자체에 의해 그려지지 않은 경우에는 채워지는 테두리입니다. 이전의 가정이 맞다면, 아마도'JComponent'의 ['getBorder'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#getBorder()) 너에게 국경을 줄 수 있고 너는 그것의 두께를 얻기 위해 너를 사용할 수있다. – asermax