всего лишь короткий вопрос: возможно ли добавить цвет фона в JComponent, когда он добавляется непосредственно в JFrame с использованием нулевого макета? Размер и положение компонента устанавливаются setBounds(), и я знаю, что цвет фона не будет отображаться с использованием этой настройки. (Я знаю, что вы всегда должны использовать менеджеров компоновки, но в этом случае я хочу предотвратить это).Цвет фона JComponent с использованием нулевого макета?
0
A
ответ
1
JComponent
прозрачен по умолчанию, вам необходимо либо изменить его opaque
состояние и не используйте JPanel
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.LineBorder;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
TestPane pane = new TestPane();
pane.setBounds(10, 10, 100, 100);
JFrame frame = new JFrame("Testing");
frame.setLayout(null); // This is bad, but it proofs my point
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pane);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JComponent {
public TestPane() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
setOpaque(!isOpaque());
repaint();
}
});
setBackground(Color.BLUE);
setBorder(new LineBorder(Color.RED));
}
}
}
null
макеты плохие новости, я не оправдываю их, и вы должны избегать их использования, в приведенном выше примере просто доказывает точку, что это JComponent
s opaque
состояние, которое должно быть изменено
Why is it frowned upon to use a null layout in SWING? хороший читать о том, почему вы должны избегать использования null
макетов.
Если вы хотите больше контроля, напишите сами.
Смежные вопросы
- 1. Установить цвет фона макета
- 2. Получить цвет фона макета
- 3. Как мерцать цвет фона любого JComponent?
- 4. Как установить цвет фона макета?
- 5. изменить цвет фона макета в Android
- 6. изменить цвет фона макета, который имеет фрагмент
- 7. Android - Динамически меняющийся цвет фона макета
- 8. Настройка программно цвет фона макета = nullpointerexc
- 9. Как изменить цвет фона макета и сохранить этот цвет навсегда
- 10. Цвет фона .shp с использованием функции `readShapeSpatial`
- 11. Центр Цвет фона с использованием css
- 12. Установите цвет фона UITableViewCell с использованием CALayer
- 13. Цвет фона с использованием ncurses на Linux
- 14. Как добавить JScrollPane на JTabbedPane с использованием нулевого макета?
- 15. Вставка Jtable в JTextpane с использованием нулевого макета
- 16. Цвет фона мерцает с использованием JCheckBox в JTable
- 17. ImageButton цвет фона с AppCompat
- 18. Настройка фона фона фона с использованием ресурса
- 19. TreeCellRenderer: как установить цвет фона?
- 20. Цвет фона с Bootstrap
- 21. Цвет фона с позиции
- 22. Обновить цвет фона фона
- 23. UIView игнорирует цвет фона в XCode 8 (или вопрос макета)
- 24. Как определить границу для макета, уже имеющего некоторый цвет фона
- 25. В андроиде цвет фона линейного макета не работает
- 26. Изменить цвет фона макета после начала другой деятельности
- 27. Как изменить цвет фона унаследованного стиля в стилях макета Android?
- 28. изменить цвет фона для макета через программно в android
- 29. Полная ширина div цвет фона внутри жидкой сетки макета
- 30. Изменение фона макета по теме
[Почему он недоволен использованием пустого макета в SWING?] (Http://stackoverflow.com/questions/6592468/why-is-it-frowned-upon-to-use-a-null-layout -in-swing) – MadProgrammer
Java GUI должны работать с различными ОС, размером экрана, разрешением экрана и т. д., используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). В стороне: большинство людей, которых стоит слушать, ожидают, что люди, задающие вопросы, исправит проблему «пустых» макетов (используя макет), прежде чем серьезно рассмотреть вопрос о решении других проблем. –