내 교과서 : "사용자가 버튼을 클릭하면 문구가 거꾸로 표시되는 JFrame을 확장하는 애플리케이션을 작성합니다. 사용자가 버튼을 클릭하면 문구가 정상적으로 표시됩니다. 다시."actionListener를 사용하여 문자열을 뒤집어 사용하려고 시도했습니다.
현재 paint() 메서드와 Graphic 개체를 사용하여 그려지는 String이 있습니다. String은 JUpsideDown 프레임에 표시되며 역순으로 패널 중앙에 위치합니다. 내 버튼과 actionListener를 추가했지만 -1로 곱하기로 음수 글꼴 크기를 만들려고했기 때문에 actionPerformed 메서드의 코드가 잘못되었다고 생각하지만 다시 그리면 적용되지 않는 것처럼 보입니다. . 위치 지정된 문자열은 x = 100 ad y = 100으로 이동되었지만 문자열은 여전히 거꾸로되어 있습니다.
어떤 종류의지도도 부탁드립니다. 다시 새로운 fontsize
을 캡슐화하는 새로운 Font
개체를 인스턴스화 할 필요가 있지만
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class JUpsideDown extends JFrame implements ActionListener
{
int x = 350;
int y = 100;
int fontSize = -26;
Font font = new Font("Serif", Font.PLAIN, fontSize);
JButton press = new JButton("Flip Text");
String label = "Look at this text, it will flip!";
public JUpsideDown()
{
setTitle("JUpsideDown");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(press);
press.addActionListener(this);
}
public void paint(Graphics g)
{
super.paint(g);
g.setFont(font);
g.drawString(label, x, y);
}
public void actionPerformed(ActionEvent e)
{
fontSize = fontSize * -1;
x = 100;
y = 100;
repaint();
}
public static void main(String[] args)
{
JUpsideDown frame = new JUpsideDown();
frame.setSize(450, 200);
frame.setVisible(true);
}
}
.... –
음수 폰트 크기는 텍스트를 뒤집을 것이고, 대신에 네거티브 상태를 통해'Graphics' 문맥의 크기를 조절할 필요가 있습니다. 일반적으로'JFrame'과 같은 최상위 컨테이너의'paint'를 오버라이드하고 싶지는 않습니다. 문제가 없으면 대신'JPanel'으로 시작하여'paintComponent' 메소드를 오버라이드해야합니다. – MadProgrammer
[이 예제] (https://stackoverflow.com/questions/24522458/flipping-rotations-and-images/24523176#24523176)는 네거티브 스케일을 사용하여'Graphics' 컨텍스트를 뒤집는 것을 보여줍니다. – MadProgrammer