Взгляните на ошибку 4880747: XP L & amp; F: REGRESSION: setBackground на JButton устанавливает цвет рамки в Windows XP . В разделе оценки указано:
Изменение внешнего вида кнопки всегда может вызывать конфликты с текущей реализацией L & amp; F. Windows L & amp; F для Swing пытается быть как можно ближе к собственному дисплею. В XP мы используем встроенные растровые ресурсы для кнопок. Они не могут быть раскрашены, как в собственном API.
Вы должны вызвать setContentAreaFilled (false) на кнопке, чтобы избежать того, чтобы L & amp; F рисовал свои декорации. Это имеет побочный эффект, когда свойство opaque кнопки установлено в false, поэтому вам нужно следовать этому вызову с вызовом setOpaque (true).
Это не ошибка и будет закрыта.
blockquote>Как указано,
setContentAreaFilled(false)
иsetOpaque(true)
сделают трюк, но кнопка будет выглядеть по-другому.Если это стоит того, вы можете создать свой собственный
ButtonUI
. Вот отличный пример by @mKorbel, который может оказаться полезным.
Вы можете передавать реквизиты из класса, из которого вы звоните <Popup>
, например:
export default class Parent extends Component{
....
<Button
title={"Make Popup visible Button"}
onPress={()=>this.setState({isPopupVisible:true})
/>
<Popup isVisible={this.state.isPopupVisible} />
....
}
, а в классе Popup вы должны назначить переданные реквизиты isVisible из родительского класса в состояние класса Popup - isshowing .
Если во всплывающем окне не используется какое-либо состояние (как во многих случаях), вам следует рассмотреть возможность использования SFC (Stateless Functional Component). Это намного легче поддерживать.