Я создал класс карты, который расширяет JComponent. Я не использую никаких макетов. Но когда я добавить свою карту в JFrame в spesific местоположения с использованием SetBounds() метод, образ отрезает, как это: Почему мое изображение не полностью окрашено?
Метод краски карта:
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
if(degrees!=0) g2d.rotate(Math.toRadians(degrees));
int first,second;
switch(colorCardType){
case RED_HEART: first = 0;
break;
case RED_DIAMOND: first = 1;
break;
case BLACK_SPADE: first = 2;
break;
case BLACK_CLUB: first = 3;
break;
default: first = 4;
break;
}
switch(cardType) {
case ACE: second = 0;
break;
case TWO: second = 1;
break;
case THREE: second = 2;
break;
case FOUR: second = 3;
break;
case FIVE: second = 4 ;
break;
case SIX: second = 5;
break;
case SEVEN: second = 6 ;
break;
case EIGHT: second = 7;
break;
case NINE: second =8 ;
break;
case TEN: second = 9;
break;
case JACK: second = 10;
break;
case QUEEN: second = 11;
break;
case KING: second = 12;
break;
default: second = 0;
break;
}
g2d.drawImage(images[first][second], super.getX(), super.getY(), null);
}
Основной код: (импортная часть)
frame = new JFrame();
frame.setLayout(null);
Card test = new Card(CardType.ACE,ColorCardType.RED_HEART,0);
frame.add(test);
test.setBounds(40,0,72,96);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Спасибо, это работает. Но теперь, когда я пытаюсь повернуть его, карта снова отключается. [пример] (http://prntscr.com/5gmczg) –
Метод с одним аргументом Graphics2D.rotate вращается вокруг начала координат (0, 0). Вероятно, вы захотите использовать метод поворота с тремя аргументами (https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html#rotate-double-double-double-), который вращается вокруг любой точки, которую вы указываете. Попробуйте повернуть вокруг центра компонента: 'g2d.rotate (Math.toRadians (degrees), getWidth()/2.0, getHeight()/2.0)' – VGR
это немного помогло, [но оно все еще отключается.] (Http: /prntscr.com/5gstc9) –